Я настроил PHP (5.2) с PDO (MySQL 5.1), чтобы выдавать исключения при возникновении ошибки:
$pdo = new PDO(...);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Теперь я иногда получаю исключение, которое говорит мне только "HY000: Общая ошибка". Я пытался получить больше информации из PDO, но все, что я могу сказать, это:
- errorInfo ():
array(0 => 'HY000')
- errorCode ():
array(0 => '00000')
Сбой запроса выглядит следующим образом:
INSERT INTO user_values
SELECT user_id,
attribute_id,
?,
value
FROM user_values
WHERE user_id = ?
AND set_id = ?
Я убедился, что все курсоры правильно закрыты ($stmt->closeCursor()
). Исключение выдается при вызове fetchAll()
в моем заявлении. После некоторых поисков я обнаружил, что некоторые просто игнорируют эту ошибку, но кажется совершенно неправильным отклонить исключение PDO.
Что делать? Нужно ли проверять, как «Это INSERT, нет набора результатов, так что игнорируйте эти исключения» (так как у меня нет отдельных методов для INSERT, SELECT, UPDATE, ...).