我的 iOS 应用程序中有一个本地 SQLite3 数据库。
通常一切都按需要工作,但有时SQLITE_CONSTRAINT
当我尝试将insert
新记录添加到我的表中时,我会收到一个奇怪的错误 (),调用sqlite3_step(statement)
方法。这发生在表被删除并重新创建一次之后。(是的,我需要删除表并重新创建,而不仅仅是删除我的所有记录)。
这是我创建表格的方式。
CREATE TABLE MyTable (
reference text PRIMARY KEY not null collate nocase,
value text not null collate nocase)
我的表没有任何创建的手动索引,只是自动生成了唯一索引"sqlite_autoindex_mytable_1"
。正如我在这里读到的(lang_creatable),这是一种正常情况。
这是一些代码:
sqlite3_stmt *statement;
int result = sqlite3_prepare_v2(database, [sqlString UTF8String], -1, &statement, NULL);
if (result == SQLITE_OK) {
int sql_result = sqlite3_step(statement);
// here is receive sql_result == SQLITE_CONSTRAINT (19)
}
问题不一定在 sql 查询字符串中。正如我还读到的,当我尝试插入一些具有与已经存在的相同主键的记录时,我会收到此错误。就我而言,我有一个空表并收到此错误。
所以问题是什么会导致SQLITE_CONSTRAINT
错误的原因?删除表后唯一索引不被删除并且仍然包含一些信息吗?