MySQL報錯:Column count doesn’t match value count at row 1
意思是存儲的數據與數據庫表的字段類型定義不相匹配.
由于類似 insert 語句中,前后列數不等造成的
主要有3個易錯點:
-
要傳入表中的字段數和values后面的值的個數不相等。
由于類似 insert 語句中,前后列數不等造成的
如1:省略數據庫表的列名
INSERT INTO table_name
VALUES (value1, value2, value3,…)
改為:補全列名
INSERT INTO table_name (column1, column2, column3,…)
VALUES (value1, value2, value3,…)
如2:列數不相等,則檢查相匹配的列數
INSERT INTO table_name(col_name1, col_name2, col_name3) VALUES(‘value1’,‘value2’); -
values的值類型與表中定義的字段類型不相符
解決辦法:檢查段類型是否正確, 是否越界, 有無把一種類型的數據存儲到另一種數據類型中.
看看訪問數據庫的sql語句是否書寫錯誤,賦值的參數是否與字段類型一致
比如有以下代碼:
eg:一個表中有如下6個字段:
sql = "insert into user(id_card, passwd) values({}, '{}';".format(127, '111')
表中定義的id_card是字符串類型,但是這里傳入的是整型。不相符。
另外,多說一句:這里的values值的類型與傳入的參數類型無關。
比如:values({})這是一個整型,values(‘{}’)這是一個字符串類型
類型區別的重點在與values中的{}是否被單引號括起來,如果括起來了就是字符串,沒有就是整型。而與format()中參數類型無關。
- 書寫錯誤。
如標點符號,英文符號錯輸成中文;如多出空格等
注意:逗號,括號,分號都要用英文的不要寫成中文的!!!!!!!(我就是這樣錯的 哭~)