0

我有一个创建表格的脚本,然后插入一行。这是我为创建表而执行的 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>
4

3 回答 3

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')
于 2013-05-01T08:54:53.757 回答
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 语句的 MySQL 参考手册。

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

于 2013-05-01T08:56:17.347 回答
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');

希望能帮助到你。

于 2013-05-01T09:01:51.870 回答