无法在表中插入行(列计数不匹配)

时间:2013-05-01 08:53:04

标签: mysql insert

我有一个脚本正在创建一个表,然后再插入一行。这是我执行创建表的SQL代码:

CREATE TABLE polls ( 
    id INT NOT NULL UNIQUE AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL UNIQUE,
    author VARCHAR(255) NOT NULL,
    created DATETIME NOT NULL,
    expires DATETIME,
    PRIMARY KEY(id)
)

这是我添加新行的地方:

INSERT INTO polls
VALUES ('TestPoll'),('Billy Bob'),('2013-05-01 04:17:31'),('2013-05-01 04:17:31')

INSERT INTO polls
VALUES ('TestPoll','Billy Bob','2013-05-01 04:17:31','2013-05-01 04:17:31')

(无论如何我得到同样的错误)

我总是收到这个错误:

<class '_mysql_exceptions.OperationalError'>, OperationalError(1136, "Column count doesn't match value count at row 1"), <traceback object at 0x7f7bed982560>

3 个答案:

答案 0 :(得分:6)

您的语法错误,请尝试:

INSERT INTO polls
VALUES ('TestPoll','Billy Bob','2013-05-01 04:17:31','2013-05-01 04:17:31')

但如果您的表格结构发生变化,您的代码将会中断,更安全的版本是:

INSERT INTO polls (name, author, created, expires)
VALUES ('TestPoll','Billy Bob','2013-05-01 04:17:31','2013-05-01 04:17:31')

答案 1 :(得分:0)

您的INSERT查询格式不正确。

INSERT INTO polls (name, author, created, expires)
VALUES ('TestPoll','Billy Bob','2013-05-01 04:17:31','2013-05-01 04:17:31');

有关更多信息,请访问INSERT statement的MySQL参考手册。

编辑:显式键入每个列名称总是一个好主意,以防表格结构在可预见的未来发生变化。

答案 2 :(得分:0)

mysql 中,您必须在插入查询中传递列名。在指定列名后,您的查询将如下所示

INSERT INTO polls (name,author,created,expires) values ('TestPoll','Billy Bob','2013-05-01 04:17:31','2013-05-01 04:17:31');

希望它有所帮助。