【问题标题】:'rowid' column is not autoincrementing [duplicate]“rowid”列不是自动递增的[重复]
【发布时间】:2017-04-06 23:37:54
【问题描述】:

之前有人问过类似的问题,但该查询嵌入在 java 中,对于提出此类问题的新手来说可能不太清楚。

我认为“rowid”列不是自动填充/自动递增的。表、insert语句、错误码如下:

CREATE TABLE T (rowid INTEGER PRIMARY KEY, c1 REAL, c2 REAL);

insert into T values (8,9);  

我的数据库浏览器中的错误代码是:

table T has 3 columns but 2 values were supplied: insert into T values (1,2);

我有其他代码非常相似,但没有产生此错误。任何帮助是极大的赞赏!谢谢!!

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    这不是 SQLite 问题,而是您的数据库浏览器强制要求所有三列的值必须始终存在的问题。

    解决此问题的一种方法是为rowid 列插入NULL。这应该强制 SQLite 分配下一个逻辑值,这就是你想要的行为:

    INSERT INTO T values (NULL, 1, 2);
    

    【讨论】:

    • 使用 AUTOINCREMENT 不会更改错误代码。此外,sqlite 文档说它应该自动增加主键sqlite.org/autoinc.html,不过谢谢!
    • @HanleySoilsmith 我相信这是您的数据库工具的问题。尝试为rowid 插入NULL
    • 我认为这也是问题所在,但是当我使用 python 执行查询时,我的 python shell 给出了同样的错误......将研究更新 sqlite3 并查看是否有效。目前,使用 null 确实有效。感谢您的帮助
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多