2016-06-19 45 views
9

SQLiteConstraintException: foreign key constraint istisnası hakkında bilgi almak mümkün olup olmadığını bilmek istiyorum.Android sqlite'deki anahtarın neden olduğu yabancı anahtar kısıtlaması hakkında nasıl bilgi edinebilirim?

Hangi sütun numaralı yabancı anahtar kısıtlamalarının ihlaline neden olduğunu bilmek istiyorum.

Bu bilgileri özel durumdan almanın bir yolu var mı?

Ayrıca, bu Constraint ismini alabilsem iyi olur.

+0

Eksik kısıtlamayı catch maddesinde bulmak mümkün mü? Veri dökümü yakalamak konusunda yardımcı olabilir. – navit

cevap

1

SQLiteConstraintException gelen yabancı anahtar kısıtlamayı ihlal sütun adını bulmak için hiçbir doğrudan yolu: yabancı anahtar kısıtlamasını istisna.

Ama operasyon bulabilirsiniz SQLiteConstraintException yükseltmek adını (silme, ekleme, vb oluşturma): yabancı anahtar kısıtlaması exception.In yukarıdaki günlüğüne

04 yılında günlüğüne

04-27 11:15:27.152: E/AndroidRuntime(22031): FATAL EXCEPTION: main 
    04-27 11:15:27.152: E/AndroidRuntime(22031): android.database.sqlite.SQLiteConstraintException:   
    foreign key constraint failed (code 19) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at it.jackpot21.personalmoney.DbAdapter.SQLdelete(DbAdapter.java:89) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at it.jackpot21.personalmoney.PersoneActivity$5.onClick(PersoneActivity.java:215) 

aşağıdaki -27 11: 15: 27.152: E/Android Çalışması (22031): 'da android.database.sqlite.SQLiteDatabase.delete (SQLiteDatabase.java:1494)

, bu işlem yükseltme zam özelliğini anlatır. Ardından kodunuzdaki hangi satırı bu istisnayı yükseltebilir ve sorgunuzu ve sütununuzu el ile kontrol edebilirsiniz.

+0

Bu bilgiyi İstisna'dan alabilirsiniz ancak benim çözümüm değil. – breceivemail

1

Daha yeni SQLite sürümleri, tablo adlarını hata iletisine ekler, ancak her iki durumda da sütun adlarını almazsınız.

+0

hangi sürümü? – breceivemail

0

SQL'inizi sqlite tarayıcınıza kopyalayabilir, http://sqlitebrowser.org/ ve hatayı orada çoğaltma girişiminde bulunabilirsiniz ve size daha fazla bilgi vermelidir.