Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取关于android sqlite中由列引起的外键约束的信息?_Android_Sqlite_Foreign Keys_Constraints - Fatal编程技术网

如何获取关于android sqlite中由列引起的外键约束的信息?

如何获取关于android sqlite中由列引起的外键约束的信息?,android,sqlite,foreign-keys,constraints,Android,Sqlite,Foreign Keys,Constraints,我想知道是否有可能获取有关SQLiteConstraintException:foreign key constraint异常的信息 我需要知道哪个列违反了外键约束 有没有办法从异常获取这些信息 如果我能得到该约束的名称,也会很好 无法直接查找违反外键的列名 来自SQLiteConstraintException的约束:外键约束 例外 但您可以在下面的日志中找到引发SQLiteConstraintException:foreign key constraint exception的操作(删除、插

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

我需要知道哪个列违反了外键约束

有没有办法从异常获取这些信息

如果我能得到该约束的名称,也会很好

无法直接查找违反外键的列名 来自SQLiteConstraintException的约束:外键约束 例外

但您可以在下面的日志中找到引发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):在 android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)


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

较新的SQLite版本将表名添加到错误消息中,但在这两种情况下,您都无法获得列名。

我想您可以在以下问题中找到答案:


看看antoino发布的解决方案2。

您可以将sql复制到sqlite浏览器,并尝试在那里复制错误,它会给您提供更多信息。

您可以从Exception获取这些信息,但这不是我的解决方案。他的解决方案中没有有价值的数据。该解决方案提供了您需要的一切,以获取有关确切错误的更多信息。您可以打印堆栈跟踪转储,这应该足够了。是否可以推断catch子句中缺少的约束?数据转储可能有助于捕获。