2015-07-09 6 views
10

başarısız oldu. Lütfen hata mesajını aldığım yerdeki koddaki yoruma bakın. (: User.user 19 EŞSİZ kısıtlama başarısız)SQLError 19 UNIQUE sınırlamasıyla, benim Uygulama kurulurken yerel veritabanı oluşturma ve basitçe (yerel giriş yaptığını) <strong>ilk</strong> ve <strong>sadece</strong> kullanıcıyı eklerken bu hatayı alıyorum

"nedeniyle constaint başarısızlığa deyimini yürütmek olamazdı: args basitçe ["user-name-string"] olduğunu

angular.module("greenApp") 
.service("dbService",['$q', function($q){ 

    var db; 
    var promise = function(){ 
     var deferred = $q.defer(); 

     db = window.openDatabase('greenDB', '1.0', 'Green Database', 2*1024*1024); 

     db.transaction(function(tx){ 
      tx.executeSql("CREATE TABLE IF NOT EXISTS user (user TEXT PRIMARY KEY) ") 
     }, function(err){ 
      alert('Something went wrong... Error: DATABASE INIT ' + err); 
     }, function(scc){ 
      deferred.resolve(); 
     }) 

     return deferred.promise; 
    } 
    promise(); 

    var query = function(sql, args) { 
     var deferred = $q.defer(); 

     db.transaction(function(tx) { 
      tx.executeSql(sql, args, function(tx, results) { 
       deferred.resolve(results); 
      }); 
     }, function(err) { 
      deferred.reject(err); 
     }); 

     return deferred.promise; 
    }; 

    var insert_into = function(args) { 
     var queryPromise = query("INSERT INTO user (user) VALUES (?)", args); 
     console.log("in insert_into", queryPromise) // Error message comes here 
     return queryPromise; 
    }; 

    return { 
     promise: promise, 
     insert_into: insert_into, 
    }; 
}]); 

, bildiren bir hata mesajı alıyorum

Kesinlikle aynı kod çalıştıran ve sadece İon taşıdık son saf cordova projesinde çalışıyordu? neler olabileceğini Herhangi fikirler

.

+0

Tablo yapısını da gösterebilirsin dbms – Sachu

+0

kullanarak nasıl yapabilirim? – novalain

+0

Tabloda zaten aynı metni eklemeye çalışıyor musunuz? bir örnek gösterebilir misin? – Sachu

cevap

0

... kodunuzda iki kez takmadan, bu nedenle Uygulamayı her başlattığınızda bu ekleme yapmak için çalışacağız gibi görünüyor. (İlk açılışta çalıştım ve ikinci kez hatayı aldın).

Eğer CREATE TABLE IF NOT EXISTS kullanıldıkça uygulaması tablo oluşturma ama ilk ekleme başarısız olmaz.

Sen veritabanının/yazma versiyonunu okumak ve böylece tablolar/insert değerlerini oluşturmak veya db zaten gitmeye hazır olup olmadığını zorunda wich durumda bilmek Pragma user_version kullanabilirsiniz.

2

Eğer uygulamayı çıktığınızda sqlite db devam buraya

var insert_into = function(args) { 

    var queryPromise = query("INSERT INTO user (user) VALUES (?)", args); 
    console.log("in insert_into", queryPromise) // Error message comes here 
    return query("INSERT INTO user (user) VALUES (?)", args); <-- you did a query above, now you do it again?!? 
}; 
+0

Evet, gerçekten çok kötü yazılmıştı. hata olsa da ikinci sorgu üzerinde gelir .. yine aynı hata soruyu yeniden düzenledi. – novalain

+1

kodunuzu buraya yazmadan önce tekrar yazarsanız, sizi rahatsız eden sorunu bulmakta güçlük çekebiliriz. – citywall

+0

Yine de, hatayla ilgisi yoktu. – novalain

İlgili konular