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

时间:2017-05-13 13:20:30

标签: php mysql laravel laravel-5.2 mariadb

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

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

我的服务器配置如下所示

  
      
  1. 服务器:MariaDB
  2.   
  3. 服务器版本:10.1.20-MariaDB - MariaDB Server
  4.   
  5. PHP 5.6
  6.   

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

3 个答案:

答案 0 :(得分:1)

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

例如:

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

答案 1 :(得分:0)

两者内部 (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
  3. 因为当我在/config/database.php中添加它时,我一直得到同样的错误,所以经过几个小时的谷歌搜索,我意识到这是因为这个/bootstrap/cache/config.php是一种缓存文件由Laravel .env文件和/config/database.php以及其他文件组成,当您使用php artisan key:generate。在.env文件中设置API_KEY内容时,此缓存文件似乎只进行一次。

答案 2 :(得分:-1)

在到处研究之后,我得出结论,问题出在共享主机的数据库引擎中,可能是权限或其他内容,所以我找到的解决方案是在单独的服务中创建数据库 。我使用了sql9.freemysqlhosting.net,到目前为止工作正常。

注意:上面的这个想法是从另一个人复制的,但我尝试过,它运作成功