Intereting Posts
   

我怎样才能得到有关列在android sqlite中引起外键约束的信息?

我想知道是否有可能获得有关SQLiteConstraintException: foreign key constraintexception的信息。

我需要知道哪个导致违反外键约束

有什么办法从exception中获取这些信息吗?

如果我能得到那个约束的名字,那也是好的。

我想你可以在下面的问题中find答案:

可能从Android SQLiteConstraintException获取具体的错误细节?

看看antoino发布的解决scheme2。

没有直接的方法来查找违反SQLiteConstraintException:外键约束exception的外键约束的列名称。

但是你可以find操作(删除,插入,创build等)引发SQLiteConstraintException的exception:外键约束exception。在下面的日志

  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) 

在上面的日志中

04-27 11:15:27.152:E / AndroidRuntime(22031):在android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)

这告诉我们删除操作引发exception。 然后你可以find你的代码中的哪一行引发这个exception,并手动检查你的查询和列。

较新的SQLite版本将表名添加到错误消息中,但是在任何情况下都不会获得列名。

你可以将你的sql复制到sqlite浏览器, http: //sqlitebrowser.org/并尝试复制错误,它应该给你更多的信息。