我已经烧了大约五个小时,并询问了几位同事,所以我觉得可能是时候寻求帮助了。
我有一个适度大小(~1GB).sql转储文件我正在尝试加载到数据库中。因此,在大多数编辑中检查起来有点困难。
这个文件显然是由mysql自动生成的,所以我发现语法错误有点惊讶。文件顶部说明......
MySQL dump 10.13 Distrib 5.5.31, for debian-linux-gnu (x86_64)
我尝试使用两个不同版本的MySql加载此文件,我拥有的版本(5.5.38)以及使用该文件创建的版本(5.5.31)。具体问题显然发生在以下一行......
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `thing` BEFORE INSERT ON `crawler_project` FOR EACH ROW delete from django_session; */;;
具体错误提及
ERROR 1064 (42000) at line 884: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*/' at line 1
据我所知,这些类型的注释允许不同版本的mysql考虑不同的命令。因为我的版本和创建版本都超过了这些评论所指定的版本,所以我删除了评论符号(无论如何都考虑了这些,我想)并且出现了这个错误......
ERROR 2006 (HY000) at line 884: MySQL server has gone away
就在这时,我觉得我应该停止编辑自动生成的文件。有人对我有什么想法吗?
答案 0 :(得分:2)
为什么这个问题有些过时,我想我会与那些使用大小相当大的转储文件有类似问题的人分享我的发现。
为了允许通过大型转储文件进行更新,必须将MySQL配置为处理更大的数据包大小。以下是更新文件的步骤:
max_allowed_packet
选项。如果它不存在,请创建它。您应该根据您可能使用的任何转储文件设置大小以反映您的需求,即max_allowed_packet=500M
将最大数据包大小设置为500MB。 This SO question可以为更多信息提供更多解释和参考。