2017-11-25 1 views
0

Ich benutze Javascript und SQLite und versuchen, eine UPDATE-Abfrage, nach AJAX Post bei Erfolg, in SELECT-Abfrage ausführen. Die SELECT und AJAX Post war erfolgreich, aber auf UPDATE zurückkehren Fehler: Fehler: SQLITE_BUSY: Datenbankführen Update-Abfrage innerhalb von db.each

gesperrt ist mir
var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('sqlite-database.db'); 

db.serialize(function(){ 

     db.each("SELECT id_sales, id_customer, date FROM sales where syncstatus = 0", function(err, row) { 

     id_sales = row.id_sales; 
     id_customer = row.id_customer; 
     date = row.date; 

     $.ajax('http://localhost/newserver/sales/sync_sales', { 
      type: 'POST', 
      async: false, 
      data: { id_sales_ori: id_sales, id_customer:id_customer, date: date }, 
      success: function (data, status, xhr) { 


       var sqlite3 = require('sqlite3').verbose(); 
       var db = new sqlite3.Database('sqlite-database.db'); 

      db.run("UPDATE sales set syncstatus = $status WHERE id_sales = $id_sales",{ 
       $id_sales: id_sales, 
       $status: 1, 
      },function (err,rows){ 
       if (err === null){ 
       console.log("syncstatus update to 1"); 
       }else{ 
       console.log(err); 
       } 
      }); 

      }, 
      error: function (jqXhr, textStatus, errorMessage) { 
        console.log("fail sync"); 
        stat[id_sales] = 0; 
       } 
     });   

    }); 
}); 
db.close(); 

bitte helfen, wie innerhalb von db.each richtig die UPDATE-Abfrage zu tun.

Antwort

0

Es ist nur, weil Sie db ein zweites Mal öffnen, wenn es bereits läuft oder verwendet wird.

$.ajax('http://localhost/newserver/sales/sync_sales', { 
      type: 'POST', 
      async: false, 
      data: { id_sales_ori: id_sales, id_customer:id_customer, date: date }, 
      success: function (data, status, xhr) { 

       //..........try removing these two lines............ 
       var sqlite3 = require('sqlite3').verbose(); 
       var db = new sqlite3.Database('sqlite-database.db'); 

      db.run("UPDATE sales set syncstatus = $status WHERE id_sales = $id_sales",{ 
       $id_sales: id_sales, 
       $status: 1, 
      },function (err,rows){ 
       if (err === null){ 
       console.log("syncstatus update to 1"); 
       }else{ 
       console.log(err); 
       } 
      }); 

      }, 
      error: function (jqXhr, textStatus, errorMessage) { 
        console.log("fail sync"); 
        stat[id_sales] = 0; 
       } 
     }); 
Verwandte Themen