【问题标题】:Is there a maximum limit for the value max_allowed_packet?max_allowed_pa​​cket 的值是否有最大限制?
【发布时间】:2011-09-07 04:01:24
【问题描述】:

我正在运行一个 drupal 站点。我的站点出现错误 user warning: Got a packet greater than 'max_allowed_pa​​cket' bytes query. 我已将值设置为高达 128M 。即使在报告了相同的错误之后。

这里有什么问题??为什么它不起作用??

值 max_allowed_pa​​cket 是否有最大限制?

【问题讨论】:

  • 可能的共同原因:stackoverflow.com/questions/93128/…
  • 您是否 100% 确定已将 max_allowed_pa​​cket 设置为 128 兆?通常,如果一个程序抱怨没有设置某些东西 - 它通常表明用户以某种方式搞砸了。你是如何设置 max_allowed_pa​​ckts 的?
  • 看来变化没有得到体现。我在 /etc/my.cnf 文件中添加了 max_allowed_pa​​cket = 128M。但是当我运行命令 "show variables like 'max_allowed_pa​​cket%' ;" 输出为 max_allowed_pa​​cket 1048576 我尝试从 mysql 控制台设置它 mysql> set max_allowed_pa​​cket = 134216704; 但是当我重新启动它并再次检查时,设置变量又回到了 1048576。如何永久设置 max_allowed_pa​​cket ??

标签: mysql drupal


【解决方案1】:

我在使用带有 LONGBLOB 字段的 mysqldump 时遇到了这个错误,设置这个最大值并没有帮助。这成功了:

$ mysqldump --max_allowed_packet=999M -u root -p table_name > table_name.sql

【讨论】:

    【解决方案2】:

    您需要在适用于您正在执行的操作的所有部分中设置设置,并且始终在 [MySQLd] 部分中进行设置。该设置适用于您正在使用的元素的缓冲区。所以在 [MySQLd] 下是为你的 MySQL 服务器进程守护进程在 linux / 在 windows 上的服务。如果您想使用 MySQLDump 进行转储,请将其作为参数添加到命令行中,或者在您的 my.ini 中创建一个 [MySQLDump] 部分,并为此工具使用相同的参数使其永久化。如果您想再次使用 MySQL 再次导入转储,请使用命令行上的参数或在 my.ini 中再次使用相同参数创建一个部分 [MySQL],以使该工具的选择也永久化。

    我一直在谈论 my.ini,因为我在 windows 上但在 linux 上当然是 my.cnf。

    我决定在这里解释它,因为我花了很长时间才弄清楚这一点,因为它没有在任何地方解释。然而,在示例中,我注意到一些人在多个部分下进行了设置,所以我开始更多地使用谷歌搜索,并发现这些部分与他们所做的操作之间的相关性。现在我再也没有这个问题了,在大多数情况下都不需要这里提到的 128M 的设置。但是,因为它是服务器将用于此缓冲区的最大值,如果您将内存设置得足够高,那么您的操作就不会遇到麻烦。您实际需要的大小比数据库中最大的记录大一点。

    【讨论】:

      【解决方案3】:

      尝试将max_allowed_packet = 128M 设置为my.cnf[mysqld] 类别下的最后一个选项。

      当我把它作为第一个选项时,它不起作用,但是当我把它作为最后一个选项时,它起作用了!我认为这是因为其他一些变量覆盖了max_allowed_packet

      更改my.cnf后,使用sudo service mysql restart重启MySQL,使用SHOW VARIABLES LIKE 'max_allowed_packet';检查设置

      【讨论】:

        【解决方案4】:

        首先,您需要在 my.cnf 文件中将 max_allowed_pa​​cket 设置为 128M。

        要找到它,请在命令行中使用“locate my.cnf”命令。

        文件应如下所示:

        #
        !includedir /etc/my.cnf.d
        #max_allowed_packet = 1024M
        [mysqld]
        port            = 3306
                    key_buffer_size = 256M
        #           max_allowed_packet = 100M
                    table_open_cache = 256
                    sort_buffer_size = 1M
                    read_buffer_size = 1M
                    read_rnd_buffer_size = 4M
                    myisam_sort_buffer_size = 64M
                    thread_cache_size = 8
                    query_cache_size= 16M
                    thread_concurrency = 8
                    bind-address    = 202.90.158.47
                    # skip-networking
        log = /var/log/mysql.access.log
        log-error = /var/log/mysql.error.log
        wait_timeout = 1
        
        [mysqldump]
        #max_allowed_packet     = 101M
        

        一定要取消注释(去掉max_allowed_pa​​cket = 128M行前的#号)

        最后,使用命令“/etc/init.d/mysqld restart”重启你的sql

        这应该可以解决问题。 :D

        【讨论】:

          【解决方案5】:

          这是最前沿的: 设置全局 max_allowed_pa​​cket=1073741824;

          虽然,在您的情况下将其设置得那么高可能不是一个好主意。

          附带说明,我在使用 mysqldump 时遇到了这个错误,设置这个最大值并没有帮助。这成功了: $ mysqldump --max_allowed_pa​​cket=999M -u root -p table_name > table_name.sql

          【讨论】:

            【解决方案6】:

            编辑您的/etc/my.cnf,添加max_allowed_packet 变量。

            应该是这样的:

            [mysqld]
            max_allowed_packet=1000000000
            

            然后重启你的服务器。

            【讨论】:

              【解决方案7】:

              这通常可能是由于变量没有真正生效——你做了配置改变,但是在错误的 my.cnf 中,或者你忘记了反弹应用等。

              检查正在运行的 mysql 实例的一种简单方法是在 shell 中执行以下操作:

              mysqladmin 变量 -u root -p

              并输入您的根密码。这将转储所有当前变量(包括 max_allowed_pa​​cket),并让您验证它的设置。如果它设置为 128M 并且您仍然对其感到窒息,那么您需要增加它——但这不太可能。

              【讨论】:

              • 我在 /etc/my.cnf 中所做的更改没有得到反映。当我运行 mysqladmin variables -u root -p max_allowed_pa​​cket 获得为 1048576。从 MySQL 控制台所做的更改正在生效。但是当 MySQL 重新启动时 max_allowed_pa​​cket 会回到 1048576
              • 我们面临同样的问题,你有什么解决方案
              猜你喜欢
              • 2015-08-31
              • 2011-12-25
              • 2017-01-15
              • 2021-11-16
              • 2015-06-18
              • 2012-12-11
              • 1970-01-01
              • 1970-01-01
              • 2012-02-07
              相关资源
              最近更新 更多