【问题标题】:SQL Syntax Error when Loading Database File (Possible Version Error?)加载数据库文件时出现 SQL 语法错误(可能是版本错误?)
【发布时间】:2014-10-09 02:10:58
【问题描述】:

我为此花了大约五个小时,并询问了几位同事,所以我认为可能是时候寻求帮助了。

我有一个中等大小 (~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

我了解这些类型的 cmets 允许不同版本的 mysql 考虑不同的命令。因为我的版本和创建版本都超过了这些 cmets 指定的版本,所以我删除了注释符号(我想它无论如何都在考虑这些)并得到了这个错误......

ERROR 2006 (HY000) at line 884: MySQL server has gone away

此时我觉得我应该停止编辑自动生成的文件。有人对我有什么想法吗?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2019-11-26
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多