COM_STMT_PREPARE 响应大小错误。收到 7. LARAVEL 错误

Wrong COM_STMT_PREPARE response size. Received 7. LARAVEL ERROR

我有一个使用 laravel 开发的博客。在我的本地 PC 上,一切正常。但是当我将它上传到实时共享托管服务器时,它会抛出如下错误:

ErrorException in MySqlConnector.php line 124:
Wrong COM_STMT_PREPARE response size. Received 7

我的服务器配置如下

  1. Server: MariaDB
  2. Server version: 10.1.20-MariaDB - MariaDB Server
  3. PHP 5.6

我找不到任何解决方案。任何帮助将不胜感激。

到处研究后我得出的结论是问题出在共享主机的数据库引擎上,可能是权限之类的,所以我找到的解决方案是在单独的服务中创建数据库。我使用了 sql9.freemysqlhosting.net,目前运行良好。

注:上面这个思路是抄别人的,我试了一下,成功了

我也遇到了同样的问题。我的虚拟主机提供商是 000webhost。只需在数据库配置文件 (config/database.php) 中将此 PDO 属性 PDO::ATTR_EMULATE_PREPARES 设置为 true,它应该可以正常工作。

例如:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    //.......
    'options'   => [PDO::ATTR_EMULATE_PREPARES => true,]
],

此外,如果您已缓存配置或在生产环境中 运行ning,您可能需要 运行 php artisan config:cache

两者都在里面 (1) /bootstrap/cache/config.php (2) /config/database.php

对于您的特定数据库服务器驱动程序,您需要添加:

'options' => [PDO::ATTR_EMULATE_PREPARES => true]

例如:

'driver' => 'mysql',
'host' => 'localhost',
'port' => '3306',
//.....
'options' => [PDO::ATTR_EMULATE_PREPARES => true]

但请不要将它添加到两个文件中:

  1. /bootstrap/cache/config.php
  2. /config/database.php

因为当我在 /config/database.php 中添加它时,我一直遇到同样的错误,所以经过数小时的谷歌搜索,我意识到这是因为 /bootstrap/cache/config.php 是一种由 Laravel .env 文件和 /config/database.php 等文件组成的缓存文件,当你设置API_KEY .env 文件中的东西 php artisan key:generate.