首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLSTATE[HY000]:一般错误:1835年LARAVEL上格式错误的通信包

问SQLSTATE[HY000]:一般错误:1835年LARAVEL上格式错误的通信包
EN

Stack Overflow用户
提问于 2020-11-04 09:59:06
回答 16查看 18.6K关注 0票数 49

突然间

SQLSTATEHY000:一般错误:1835年格式错误的通信包(SQL: select * from tb_users;其中(username = 121211)限制1)

在拉勒维尔。

我已经检查过了:MySQL:错误2027 (HY000):格式错误的数据包,但情况似乎不同。

  1. 在之前使用SSH登录后,我已经成功地登录到MySQL (使用: mysql -u -p)。
  2. 我已经成功地直接从远程PC登录到MySQL (使用: mysql -h IP -u -p)。

但我的Laravel得到了我之前提到的错误。在这方面有什么经验吗?

EN

回答 16

Stack Overflow用户

发布于 2020-11-05 01:36:23

我所有运行PHP7.2的Laravel应用程序都有这个错误,但是那些运行在PHP7.3上的应用程序却没有。因此,我将PHP版本更改为7.3,并修复了问题。(运行Laravel 7)

票数 38
EN

Stack Overflow用户

发布于 2020-11-04 10:28:26

找到了解决办法。不知道是永久的还是暂时的:

代码语言:javascript
复制
'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
            **'options'   => [PDO::ATTR_EMULATE_PREPARES => true]**
        ],

请确保

“选项”=> PDO::ATTR_EMULATE_PREPARES => true

存在于mysql连接上。

票数 27
EN

Stack Overflow用户

发布于 2020-11-05 17:46:37

在昨天MariaDB更新到10.3.26(和10.2.35)之后,这个问题开始发生在很多人身上。这里已经讨论了这个问题:https://jira.mariadb.org/browse/MDEV-24121

到目前为止,这是唯一已知的解决方案:

1.将PHP升级到7.3:在使用php < 7.3的站点上显示这些错误。因此,将站点的PHP升级到7.3或7.4版本应该可以解决这个问题。

缺点:不是很多应用程序都可以很容易地升级到php7.3,就像这样。有时,您可能需要更新您的平台,重写一些代码,或者检查所有的依赖项,看看它们是否都在7.3上工作。对于许多成熟的应用程序来说,这可能不是一个快速的解决方法。

2.降级MariaDB: --这是一个临时修复,因为降级MariaDB将使其回到以前的状态。

缺点:降级MariaDB不是一件容易的事情,只要点击cpanel的一个按钮。您可能需要一个网络工程师的帮助,为您做降级。在此之后,您还可能需要对MariaDB包进行yum锁定,以避免在修补之前对其进行更新。

在Database中添加'options' => [PDO::ATTR_EMULATE_PREPARES => true] :在一些答案中提出了这一点,这可能解决了一个问题,但也引发了许多其他问题。

缺点:将上述内容添加到数据库配置文件中,为我解决了一个问题,但它也打开了许多其他失败的查询,数据库插入失败的地方,等等。所以我根本不推荐这个修复。

4.等待MariaDB更新:下一次更新应该解决这个问题。

缺点:--我们不知道需要多长时间才能得到一个更新,从而解决旧版本的问题。甚至可能需要几天时间,有些应用程序可能无法等待那么长时间。

总之,这是我目前唯一能看到的选择。只是希望能尽快解决这个问题。

短期修复:--首先,降级MariaDB似乎是我唯一简单的临时修复,因为我的应用程序需要很多工作才能为PHP7.3做准备。我将MariaDB降级到10.2.34并锁定它,错误不再出现。

长期修复:最好最终使您的应用程序为php7.3做好准备并升级到它,这样MariaDB更新的版本也不会抱怨。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64677836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档