MySQL PDO пустой результирующий набор, когда ATTR_EMULATE_PREPARES имеет значение false и запрос убит

Когда для PDO :: ATTR_EMULATE_PREPARES задано значение false и ваш запрос уничтожен (например, MySQL Workbench -> Клиентские подключения -> Правый клик -> Запрос на уничтожение) во время состояния: методы «Отправка данных», PDO «запрос» или «выполнить» возвращает пустое PDOStatement.
PDO должен выдать ИСКЛЮЧЕНИЕ (только если для PDO :: ATTR_ERRMODE установлено значение PDO :: ERRMODE_EXCEPTION) или вернуть false вместо PDOStatement.

В результате ваше приложение получает пустой набор результатов, хотя этот запрос должен возвращать некоторые данные. Нет способа справиться с этой ситуацией. Когда вы запускаете errorCode () для полученного PDOStatement, вы получаете: «00000», errorInfo () возвращает массив:

['00000', null, null]

Я работаю: MySQL 5.6.22, PHP 5.6.4, pdo_mysql — mysqlnd 5.0.11-dev — 20120503

Это приводит меня к предположению, что есть ошибка либо в PDO, либо в MySQL.

Это объясняется здесь: PDO MySQL: использовать PDO :: ATTR_EMULATE_PREPARES или нет?
что для MySQL> = 5.1.17 рекомендуется полагаться на MySQL и отключить эмуляцию.

Не рекомендуется ли использовать эмуляцию PDO?

Что может повлиять на мое приложение, если я оставлю его по умолчанию (включено)?

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

Заметка

Когда запрос прерывается в состоянии:

 "Copying to tmp table"

Вы получаете PDOException с сообщением:

 "SQLSTATE[70100]: <<Unknown error>>: 1317 Query execution was interrupted"

Вы получаете точно такое же исключение при прекращении выполнения этого запроса, даже если он находится в состоянии «Отправка данных», но для PDO :: ATTR_EMULATE_PREPARES должно быть установлено значение true.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]