如何在Android SQLite中获取关于引起外键约束的列的信息?

11

我想知道是否有可能获取关于 SQLiteConstraintException: foreign key constraint 异常的信息。

我需要知道哪个导致了外键约束的违规。

是否有办法从异常中获取这些信息?

如果能够获取该约束的名称也是很好的。


你是否能在catch子句中推断出缺失的约束条件?数据转储可能有助于排除异常。 - navid
4个回答

4

他的解决方案中没有有价值的数据。 - Bobs
1
该解决方案提供了获取有关确切错误的更多信息所需的一切。您可以打印堆栈跟踪转储,这应该足够了。 - sparkonhdfs

1
新版本的SQLite会在错误信息中添加表名,但无论如何都不会显示列名。

1

没有直接的方法可以找到违反外键约束的列名,从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)

这告诉我们删除操作引发了异常。然后,您可以找到是哪一行代码引发了此异常,并手动检查查询和列。

你可以从异常中获取这些信息,但这并不是我的解决方案。 - Bobs

0
你可以将你的 SQL 复制到 SQLite 浏览器 http://sqlitebrowser.org/ 中,尝试在那里复制错误,这样应该会给你更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接