【问题标题】:SQLite - NOT NULL constraint failedSQLite - NOT NULL 约束失败
【发布时间】:2018-05-11 21:17:46
【问题描述】:

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

【问题讨论】:

    标签: sql sqlite constraints


    【解决方案1】:

    The docs说:

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

    因为它成为 ROWID 的别名,所以没有必要显式指定值。

    你有INT PRIMARY KEY,而不是INTEGER PRIMARY KEY。如果您将其更改为INTEGER PRIMARY KEY,它将按您预期的方式工作。

    【讨论】:

    • 我的答案未经测试。只是指出我看到 +1 的问题。
    猜你喜欢
    • 2015-04-22
    • 2021-09-04
    • 2018-08-24
    • 2022-01-19
    • 2021-11-16
    • 2020-12-18
    • 2021-03-20
    • 2020-02-11
    • 2019-02-13
    相关资源
    最近更新 更多