2013-05-01 34 views
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> 

回答

5

你的語法錯誤,請嘗試:

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') 
+0

嘗試使用列名稱的第二個版本。 – Chris 2013-05-01 09:00:57

+0

使用列名工作!萬分感謝。 – FreeSnow 2013-05-01 09:01:55

+0

沒問題,不要忘記標記爲答案;) – Chris 2013-05-01 09:03:04

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'); 

欲瞭解更多的信息,請訪問MySQL的參考手冊INSERT statement

編輯:明確鍵入每個列的名稱總是個好主意,以防表格結構在某些可預見的未來發生變化。

0

MySQL的,你必須在你插入query.After通過列名指定列名稱查詢看起來就像

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

希望它能幫助。

相關問題