Intereting Posts
android error org.json.JSONException: Значение <! DOCTYPE типа java.lang.String не может быть преобразовано в JSONObject Azure копирует капли из одной учетной записи хранилища в другую в той же подписке, используя API останова Как разобрать HTML-контент CDATA XML с помощью SimpleXML? Magento – проблема с созданием настраиваемого модуля PHP jpgraph анализирует x и ось y через URL-адрес? Как программно создавать базы данных MySQL на общих хостинговых планах Linux Расширение PHP с помощью C ++? Создание PDF-файлов с html-страниц CSS: установите размер шрифта таким образом, чтобы текст занимал весь контейнер Как перенаправить несуществующий подкаталог в файл index.php, сохраняя URL-адрес php Объект класса DateInterval не может быть преобразован в строку изменить цвет кнопки на клик и оставаться таким же для остальной части времени? В чем разница между генератором и массивом? Свойство PHP как объект PHPUnit сгенерированный тестовый скелетный путь

Ошибка запроса PDO PHP в таблице имеет тип данных json (MySQL 5.7.8-rc)

Я пытаюсь использовать новый тип данных json для mysql 5.7. Когда я использую собственный запрос php mysql, он работает нормально, но когда я использую PDO для запроса данных, он показывает эту ошибку:

Ошибка: исключение «PDOException» с сообщением «SQLSTATE [HY000]: общая ошибка: 2036 'в /some_folder/pdo.php:12 Трассировка стека: # 0 /some_folder/pdo.php(12): PDO-> query (' select * from 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; } ?> 

    Это ошибка, сообщенная разработчикам PHP # 70384

    Разработчик andrey@php.net только что опубликовал:

    Исправлено исправление этой ошибки.

    Снимки источников упаковываются каждые три часа; это изменение будет в следующем снимке. Вы можете получить снимок на странице http://snaps.php.net/ .

    Для Windows:

    http://windows.php.net/snapshots/ Благодарим вас за отчет и за помощь в улучшении PHP.

    Исправлено в PHP-5.6.19, PHP-7.0 и master (PHP-7.1)

    Спасибо за ваш доклад

    Таким образом, тип данных JSON будет поддерживаться на PHP 5.6.19+. Для другой версии существует обходное решение, доступное выше.

    Это временное решение изменяет поле JSON с функцией CAST на CHAR, что отлично с точки зрения PHP: например:

     select *, CAST(json_col as CHAR) as json_col from table_with_json_type 

    Он работал со мной во всех случаях.

    Для полной совместимости вы должны использовать PHP-5.6.19 +

    У меня была такая же проблема в PHP 5.5 – решили обновить до PHP 5.6, но проблема все еще существовала. Отливка от CHAR помогает, но это нехорошее решение.

    Моя конфигурация PHP использовала libmysqlclient, и когда я изменил ее на mysqlnd (родной драйвер MySQL), она решила проблему.

    Поэтому я рекомендую сделать то же самое.

    Вы можете прочитать о драйверах PHP MySQL здесь: http://php.net/manual/en/mysqlinfo.library.choosing.php

    Я установил драйвер mysqlnd на сервере Ubuntu, используя apt-get:

    apt-get install php5-mysqlnd

    В качестве небольшого добавления. Приведение столбца в символ, подобный этому, приводит к возврату значения с двойными кавычками вокруг него. Вы можете избавиться от них, используя обрезку:

     select *, TRIM(BOTH '"' FROM CAST(json_col as CHAR)) as json_col from table_with_json_type