SQLite - NOT NULL 约束失败

5

我正在尝试创建一个简单的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和自增有关?我已阅读文档,建议不要使用自增。我错在哪里了?

1个回答

21

文档中说:

如果一个表包含一个类型为INTEGER PRIMARY KEY的列,则该列成为ROWID的别名。

因为它成为ROWID的别名,所以不需要显式指定值。

你有一个INT PRIMARY KEY,而不是INTEGER PRIMARY KEY。如果你将它改为INTEGER PRIMARY KEY,它就会按照你的期望工作。


我的回答没有经过测试。只是指出我看到的问题+1。 - Tim Biegeleisen

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