我有一个包含超过14000个语句的mysql文件。 所有这些都插入到表中,当我使用控制台导入文件时,它会抛出以下错误:
ERROR 1136 (21S01) at line 1548: Column count doesn't match value count at row 45
我知道当列名中指定的行与VALUES列表中指定的行不同时会出现错误,但我已多次检查它,并且两个列中的列数完全相同。
第45位的行是:
('00553', 'AAA', 'BBB', 'CCC', 'XXXXXXXXR', 'user address', 'spain', 'spain', '39212', '1900-01-21', '123456789', 'M', 'No disponible', 0, 'AAA', 'BBB ', 'CCC', 'XXXXXXXXR', NULL, '888993344', '', '', '', '', 'no', 'no') --> 26 columns
和与之关联的插入行,上面的许多行是:
INSERT INTO `users` (`id_patient`, `name`, `surname1`, `surname2`, `dni`, `address`, `city`, `state`, `postal_code`, `birthday`, `telephone`, `sex`, `email`, `lopd_status`, `lopd_name`, `lopd_surname1`, `lopd_surname2`, `lopd_dni`, `lopd_as`, `mobile_phone`, `notes`, `job`, `company`, `place`, `active_citation`, `signature`) --> 26 columns
我已经找到了这个错误,但它似乎只在计数不同时出现,但在这种情况下,它是相同的。
有什么想法吗?
编辑:忘了提一下:如果我直接在phpmyadmin上抛出sql语句,它会正确添加行而不会出现任何错误。它只在从命令行运行时崩溃,尽管它上面的语句正确插入到数据库中,它们几乎与此相同。EDIT2:我删除了所有行,直到46,当我启动文件时,错误如下:
ERROR 1136 (21S01) at line 1503: Column count doesn't match value count at row 45
它只更改行,但该行是INSERT语句,它与文件其余部分中的其他INSERT语句完全相同。 previos线也是正确的。
答案 0 :(得分:19)
我遇到了类似的错误。这只是一个缺少逗号的问题。检查insert语句中的所有项是否用逗号分隔
答案 1 :(得分:18)
由于在数据周围插入括号,我遇到了类似的问题: - (:
INSERT INTO Customers (Name,LastCredit,CreditDate) VALUES ( <-- Here.
("Nuclear Millitary Systems",500.0,CURRENT_DATE),
("Evil Corporation",67890.95,"2012-02-12"),
("Nuke Software Systems",5600.0,"2013-05-06"),
("RR Millitary",600.0,"2013-05-06"),
("Random Automation",560.0,"2012-05-01"),
("Evil Data Systems",600.0,"2013-03-01")
);
答案 2 :(得分:6)
就我而言,我的数据库表有一个与另一个表关联的触发器,触发表中缺少一列。像这样:
表1列: UserAccountID,文档类型,权限,状态
触发表2列:版本号,修订版状态,UserAccountID,权限,状态
因此在表2中,缺少“文档类型”列。 通过
检查数据库中的触发器“显示来自{数据库名称}的触发器”
答案 3 :(得分:3)
在我的情况下,我在INSERT上有触发器,列错配计数 :(&amp;
答案 4 :(得分:1)
检查文件中是否有特殊的隐藏字符。您可能认为文件中的所有空格都是空格,但有时其他字符可以通过查看数据以某种方式杀死插入。
如果所有其他方法都失败了,请手动重新键入INSERT并在文件中单独运行它以查看它是否仍然失败。
答案 5 :(得分:0)
在我的情况下,这是“?”的数字在准备好的声明中
prepare stmt1 from "insert into company (name, address, phone) values(?,?);";
/*note only 2 question marks which should be 3.*/
这也会触发相同的错误
insert into company (name, address, phone) values('foo','bar');
答案 6 :(得分:0)
我也遇到了同样的问题。 @valplo的答案是正确的。由于我没有足够的声誉来发表评论,所以在这里写下。
插入多个值的正确方法是在关键字VALUES
后面列出值,而不是在多个值条目周围加上括号,而在单个值条目周围加上括号,并用逗号分隔每个单个值条目。
错误的方法是:
INSERT INTO my_table(column_name_0, column_name_1) VALUES(
(val_00, val_01),
(val_10, val_11)
);
正确的方法是:
INSERT INTO my_table(column_name_0, column_name_1) VALUES
(val_00, val_01),
(val_10, val_11);