7

mysql 5.7 で新しい json データ型を試しています。ネイティブ php mysql クエリを使用すると正常に動作しますが、PDO を使用してデータをクエリすると、次のエラーが表示されます。

エラー: 例外 'PDOException' とメッセージ 'SQLSTATE[HY000]: General error: 2036 ' in /some_folder/pdo.php:12 スタック トレース: #0 /some_folder/pdo.php(12): PDO->query('select * table_has_json_datatype から') #1 {main}

この問題を解決する方法を知っていますか?

ありがとう。

私の簡単なテストコードで更新してください:

<?php

try{
    $db = new PDO('mysql:host=some.host;dbname=somedb;charset=utf8', 'user', 'pwd');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException  $e){
    echo "Error1: ".$e;
}

try{
    $query = $db->query("select * from table_with_json_type");

}catch(PDOException $e){
    echo "Error2: ".$e;
}
?>
4

4 に答える 4

1

PHP 5.5 でも同じ問題がありました。PHP 5.6 に更新することにしましたが、問題はまだ存在していました。CHAR へのキャストは役立ちますが、良い解決策ではありません。

私のPHP構成はlibmysqlclientを使用していましたが、それをmysqlnd(MySQLネイティブドライバー)に変更すると問題が解決しました。

だから私は同じことをすることをお勧めします。

ここで PHP MySQL ドライバーについて読むことができます: http://php.net/manual/en/mysqlinfo.library.choosing.php

apt-get を使用して、Ubuntu サーバーに mysqlnd ドライバーをインストールしました。

apt-get インストール php5-mysqlnd

于 2016-04-26T17:45:11.200 に答える