突然间
SQLSTATEHY000:一般错误:1835年格式错误的通信包(SQL: select * from
tb_users;其中(username= 121211)限制1)
在拉勒维尔。
我已经检查过了:MySQL:错误2027 (HY000):格式错误的数据包,但情况似乎不同。
但我的Laravel得到了我之前提到的错误。在这方面有什么经验吗?
发布于 2020-11-05 01:36:23
我所有运行PHP7.2的Laravel应用程序都有这个错误,但是那些运行在PHP7.3上的应用程序却没有。因此,我将PHP版本更改为7.3,并修复了问题。(运行Laravel 7)
发布于 2020-11-04 10:28:26
找到了解决办法。不知道是永久的还是暂时的:
'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连接上。
发布于 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更新的版本也不会抱怨。
https://stackoverflow.com/questions/64677836
复制相似问题