我正在尝试创建一个简单的SQLite数据库,它允许我存储电子邮件地址和时间戳。我创建了这样的表:
$sql =<<<EOF
CREATE TABLE ENTRIES
(ID INT PRIMARY KEY NOT NULL,
EMAIL EMAIL NOT NULL,
TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP);
EOF;
我正在尝试插入这样的电子邮件:
$sql =<<<EOF
INSERT INTO ENTRIES (EMAIL)
VALUES (test@test.com);
EOF;
我收到错误
NOT NULL constraint failed: ENTRIES.ID
我假设这与ID和自动增量有关?我已阅读文档,并建议不要使用自动增量。我哪里错了?
答案 0 :(得分:7)
The docs说:
如果表包含INTEGER PRIMARY KEY类型的列,则该列将成为ROWID的别名。
因为它成为ROWID的别名,所以没有必要明确指定一个值。
您有ContentStringFormat
,而不是INT PRIMARY KEY
。如果您将其更改为INTEGER PRIMARY KEY
,则会按预期方式运行。