【发布时间】:2013-09-02 21:45:11
【问题描述】:
我的 iOS 应用程序中有一个本地 SQLite3 数据库。
通常一切都按需要运行,但有时当我尝试 insert 将新记录添加到我的表中时,我会收到一个奇怪的错误 (SQLITE_CONSTRAINT),调用 sqlite3_step(statement) 方法。这发生在表被删除并重新创建一次之后。(是的,我需要删除表并重新创建,而不仅仅是删除我的所有记录)。
这是我创建表格的方式。
CREATE TABLE MyTable (
reference text PRIMARY KEY not null collate nocase,
value text not null collate nocase)
我的表没有任何手动创建的索引,只是自动生成了唯一索引"sqlite_autoindex_mytable_1"。当我阅读here(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 错误?删除表后唯一索引不被删除还能包含一些信息吗?
【问题讨论】: