我有一个从 mysqldump 生成的 sql 转储。该文件包括 mysql-version 特定的注释 (/*!{MySQL version number} {Code} */
)。如果我在此块之后插入 sql 语法错误,PDO 不会触发异常。
php代码
$sql = file_get_contents('FooBar.sql');
$pdo = new \PDO('mysql:host=localhost;dbname=FooBar', 'root');
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->exec($sql);
FooBar.sql
/*!40101 SET @Foo='Bar' */;
ERROR
INSERT INTO Foo VALUES ('Bar');
执行此操作不会导致任何异常或错误。如果我删除该/*!40101 SET @Foo='Bar' */;
语句,或者将错误移动到队列中,则会引发 PDOException。