2014-10-09 56 views
1

我已经烧了大约五个小时,并且询问了几个同事,所以我想这可能是时候寻求帮助了。加载数据库文件时SQL语法错误(可能的版本错误?)

我有一个中等大小(〜1GB).sql转储文件我试图加载到数据库中。因此,在大多数编辑中进行检查有点困难。

这个文件显然是由mysql自动生成的,所以我有点惊讶地发现语法错误。该文件指出的顶部...

MySQL dump 10.13 Distrib 5.5.31, for debian-linux-gnu (x86_64) 

我试图加载此文件有两个不同版本的MySQL,我的版本(38年5月5日)和该文件创建时使用的版本( 31年5月5日)。具体的问题显然是发生在下面的行...

/*!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 

正是在这一点上我觉得我应该停止编辑自动生成的文件。任何人对我有任何想法?

回答

2

为什么这个问题有点过时,我想我会分享我的发现,对于那些使用大小有点大的转储文件时遇到类似问题的人。

为了允许通过大型转储文件进行更新,必须将MySQL配置为处理更大的数据包大小。以下是更新文件的步骤:

  1. 导航到您的MySQL配置文件。 This SO question是一个很好的参考找到它。
  2. 找到max_allowed_packet选项。如果它不存在,请创建它。您应该根据您可能使用的任何转储文件来设置大小以反映您的需求,即max_allowed_packet=500M将最大数据包大小设置为500MB。 This SO question可以帮助提供更多的解释和参考信息的更多信息。
  3. 重新启动MySQL。如果您已经根据需要设置了最大数据包大小,那么您应该不会再遇到此错误的麻烦。如果您的错误仍然存​​在,并且您已经适当设置了尺寸,则可能需要了解其他配置选项。 This page有一些很好的信息可以帮助你进一步探索。