我想知道是否有可能获取关于 SQLiteConstraintException: foreign key constraint
异常的信息。
我需要知道哪个列导致了外键约束的违规。
是否有办法从异常中获取这些信息?
如果能够获取该约束的名称也是很好的。
我想知道是否有可能获取关于 SQLiteConstraintException: foreign key constraint
异常的信息。
我需要知道哪个列导致了外键约束的违规。
是否有办法从异常中获取这些信息?
如果能够获取该约束的名称也是很好的。
Possible to get specific error details from Android SQLiteConstraintException?
请查看antoino发布的第2个解决方案。没有直接的方法可以找到违反外键约束的列名,从SQLiteConstraintException: foreign key constraint exception异常中。
但是你可以在以下日志中找到引发SQLiteConstraintException: foreign key constraint 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): at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)