SQLite - NOT NULL约束失败

时间:2018-01-17 08:54:23

标签: sql sqlite constraints

我正在尝试创建一个简单的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 个答案:

答案 0 :(得分:7)

The docs说:

  

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

因为它成为ROWID的别名,所以没有必要明确指定一个值。

您有ContentStringFormat,而不是INT PRIMARY KEY。如果您将其更改为INTEGER PRIMARY KEY,则会按预期方式运行。