Laravel和MemSQL列存储,无缓冲查询是活动的

时间:2017-07-31 14:53:51

标签: php laravel memsql unbuffered-queries

我目前正在使用MemSQL Columnstore并尝试将其与laravel 5集成,但每次我尝试进行查询时都会出现以下错误

SQLSTATE [HY000]:常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询。考虑使用PDOStatement :: fetchAll()。

我一直在搜索并找到了这个:

Don't use prepared statements in Laravel Eloquent ORM?

试图像这样做,但没有工作。这是我的查询

 public function index(){
    $sql = 'SELECT * FROM SCORE LIMIT 20';
    $pdo = DB::getPdo();
    $query = $pdo->query($sql);
    $result = $query->fetchAll();

    return view('home', compact('result'));
}

任何指导都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

我也有同样的问题。

根据MemSQL文档,您需要配置客户端驱动程序:https://docs.memsql.com/concepts/v6.0/prepared-statements/

在database.php中,添加一个新的选项键。

这是我的配置,它与默认配置几乎相同,请注意选项键。

'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' => true,
    'engine' => null,
    'options' => array(
        PDO::ATTR_EMULATE_PREPARES => TRUE
    ),
],