2015-07-13 4 views
0

Эта ошибка возникает, когда я добавить 20 строк к моему столу через для цикла:node.js sqlite3 - ошибка при добавлении строки динамически

ОШИБКИ: SQLITE_ERROR: не может начать транзакцию, в рамках сделки по ошибке (нативный)

Вот соответствующий код:

var sqlite3 = require('sqlite3').verbose(); 
var Players_db = new sqlite3.Database('./db/Players'); 

Players_db.serialize(function() 
{ 
    Players_db.run("BEGIN TRANSACTION"); 
    Players_db.run("CREATE TABLE IF NOT EXISTS Players(string TEXT)"); 
    Players_db.run("COMMIT"); 
    console.log('Players_db init') 
}); 

// This part is a simplification, but it shouldn't make a difference. 
for (var i = 0; i < 20; i ++) 
{ 
    Players_db.run("BEGIN TRANSACTION"); 
    Players_db.run("INSERT INTO Players VALUES('"+a_string+"')"); 
    Players_db.run("COMMIT"); 
} 

он также представляется, что для контура завершается успешно (и данные были приложены к БД), но вскоре после этого он падает с указанной ошибкой.

ответ

1

Попробуйте

 Players_db.serialize(function() 
     { 
      Players_db.run("BEGIN TRANSACTION"); 
      for (var i = 0; i < 20; i ++) 
      { 
       Players_db.run("INSERT INTO Players VALUES('"+a_string+"')"); 
      } 
      Players_db.run("COMMIT"); 
     }) 
+0

Он работает, но в связи с характером применения, я не могу добавить строки из того же события сериализации. – user2810330

+0

Я понял, что могу использовать функцию сериализации для каждой новой строки. Спасибо1 – user2810330

Смежные вопросы