phpMyAdmin隐藏批量INSERT语句的语法错误?

时间:2013-12-18 13:53:42

标签: php mysql phpmyadmin

当我尝试使用phpMyAdmin导入大型.sql文件时,它不会报告语法错误。每次它只返回“1命令被成功执行”。然后我看着桌子,发现它是空的。

如果我手动编辑.sql文件并将其与START TRANSACTION;COMMIT;语句一起打包,它会按预期报告错误。

我担心某些地方可能出现了错误的配置。我实际使用的数据是保密的,但我能够使用以下测试数据重现该问题:

架构:

CREATE TABLE IF NOT EXISTS `test` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `field1` int(11) NOT NULL,
    `field2` int(11) NOT NULL,
    `field3` int(11) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

no_error_message.sql的内容:

INSERT INTO `test`(field1,field2,field3) VALUES
(1,2,3),
(1,2,2),
(1,2,3),
(1,2,2),
-- ... around 20,000 similar rows
(1,,3),
-- oops syntax error
(1,2,5);

只有在sql文件非常大的情况下才会发生这种情况。

  • phpMyAdmin版本4.0.4.1
  • php version 5.2.14
  • MySQL Server版本5.1.69

使用phpMyAdmin中的导入功能导入数据。就像我说的那样,当我把它变成一个事务时,它会神奇地注意到语法错误。这只是一个错误(如果是这样,在哪个包中,它是在最新版本中发生的),还是还有其他的东西在这里?在数据库方面,我倾向于过于偏执。

我无法在Google搜索中找到任何有用的内容。

1 个答案:

答案 0 :(得分:1)

我无法告诉你为什么它仅在“事务”下报告错误,但我建议您针对.sql文件运行某种验证脚本,以检查VALUE列表中是否有丢失或无效的条目把它喂给phpMyAdmin。此外,一切都在一个INSERT下,还是分成多个INSERT,每个语句有合理数量的VALUE集?您可能会看到它是否开始使用较小的数据组(例如,每次几百套)报告语法错误。