Вот всегда так, начинаешь писать на форум вопрос и сразу становится понятно. Однако, кому интересна причина самого вопроса смотрим далее: тут https://php.ru/manual/pdo.error-handling.html сказано: PHP: // Следующий запрос приводит к ошибке уровня E_WARNING вместо исключения (когда таблица не существует) $dbh->query("SELECT wrongcolumn FROM wrongtable"); и при PDO::ERRMODE_EXCEPTION должно: "Помимо задания кода ошибки PDO будет выбрасывать исключение PDOException" Мой код: PHP: $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, // За обработку подготовленных выражений отвечает сам PDO. PDO::ATTR_STRINGIFY_FETCHES => false, // Преобразовывать числовые значения в строки во время выборки. ]; $pdo = new PDO("mysql:host=$host;charset=$charset", $user, $password, $opt); ... $sql = ' drop procedure if exists `tree_ct_add`; drop procedure if exists `tree_ct_add`; drop procedure if exists `tree_ct_add`; drop procedure if exists `tree_ct_add`; drop procedure if exists `tree_ct_add`; drop procedure if exists `tree_ct_add`; drop procedure if exists `tree_ct_add`; '; try { $intOrFalse = $pdo->exec($sql); echo "<pre>"; var_dump($pdo->query("SHOW WARNINGS")->fetch()); echo "</pre>"; } catch (PDOException $e) { echo "PDOException: <pre>"; echo $e->getMessage(); echo "</pre>"; die(); } Собственно ответ скрипта: Код (Text): array(3) { ["Level"]=> string(4) "Note" ["Code"]=> int(1305) ["Message"]=> string(41) "PROCEDURE tree.tree_ct_add does not exist" } Вот зашибись, это же Note а не Ворнинг, Вот всегда так, начинаешь писать на форум вопрос и сразу становится понятно.