发生了什么
周末无事,想装上 PHP8 体验一把新版本的特性,找了一个 Yii2 写的老项目,结果运行 migration 初始化环境就遇到了问题,建表脚本直接报错。Exception: There is no active transaction
而同样的脚本在 7.4 版本也完全正常。
测试脚本
简化的脚本差不多是这样$conn = new PDO("mysql:host=127.0.0.1;dbname=test", 'root', '123456');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->beginTransaction();
try {
$sql = "CREATE TABLE IF NOT EXISTS test (`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `text` varchar(32) NOT NULL DEFAULT '', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
$conn->exec($sql);
$sql = "INSERT INTO test values(1,'test1')";
$conn->exec($sql);
$conn->commit();
} catch (Exception $e) {
echo $e->getMessage();