php - PDO 回滚不起作用

标签 php mysql pdo

$myServer='127.0.0.1';
$myDB='karma';
$myUser='root';
$myPass='wilian';


try {
    $connStr = "mysql:host=".$myServer.";dbname=".$myDB; 
    $dbh = new PDO($connStr,$myUser,$myPass);
} catch (Exception $e) {
    die("Unable to connect: " . $e->getMessage());
}

try {  
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();
  $dbh->query("insert into mst_goods_category (id, GOODS_CATEGORY_CODE, GOODS_CATEGORY_NAME, ACTIVE_FLAG, CREATE_DATE, CREATE_TIME, CREATE_USER) values (12, '012', '333', 'Y', '20140702', '00:00:00', 'admin')");
  $dbh->query("insert into mst_goods_category (id, GOODS_CATEGORY_CODE, GOODS_CATEGORY_NAME, ACTIVE_FLAG, CREATE_DATE, CREATE_TIME, CREATE_USER) values (13, '012', '333', 'Y', '20140702', '00:00:00', 'admin')");
  $dbh->commit();

} catch (PDOException $e) {
  $dbh->rollBack();
  throw $e;
}

由于唯一约束,第二个查询出错。 出现了 throw $e,但它没有回滚,有人知道出了什么问题吗?

最佳答案

很可能您使用的 Myisam 引擎不支持事务。改为InnoDB

ALTER TABLE mst_goods_category ENGINE=InnoDB;

关于php - PDO 回滚不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23027016/

相关文章:

php - 在 Wordpress 中使用当前帖子 ID 获取下一个/上一个帖子 ID

php - 使用 Ajax 调用函数?

java - 如何捕获oracle过程中pdo_oci的参数消息

php - PDO更新仅更新一行

php - MySQL 多参数

mysql - 从 3 个不同的表中选择项目

javascript、php、onchange 选择框不起作用

php - 使用 curl 定期从远程服务器获取数据

mysql - 用一个查询得到两个查询的结果 - mysql

mysql - 使用 COUNT() 查找另一个表中存在多少行