我有一个脚本正在创建一个表,然后再插入一行。这是我执行创建表的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>
答案 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');
希望它有所帮助。