PHP PDO 事务问题

发布于 2024-11-17 03:41:12 字数 578 浏览 2 评论 0原文

我有一个简单的 try catch,但它没有按照我的预期运行。这是我第一次尝试使用 PDO 事务:

try
        {
            $dbo = Db::init();
            $dbo->beginTransaction();
            $dbo->exec("TRUNCATE TABLE {$this->table}");
            $dbo->exec($insert);
            $dbo->commit();
        }
        catch(Exception $e)
        {
            $dbo->rollBack();
            echo 'Failed to sync ' . $this->table; 
        }

问题是,如果 $dbo->exec($insert); 失败,则 $dbo->exec("TRUNCATE TABLE {$this->table}"); 不会回滚。有什么想法吗?

I have a simple try catch which is not operating how I would expect. This is my first try at using transactions with PDO:

try
        {
            $dbo = Db::init();
            $dbo->beginTransaction();
            $dbo->exec("TRUNCATE TABLE {$this->table}");
            $dbo->exec($insert);
            $dbo->commit();
        }
        catch(Exception $e)
        {
            $dbo->rollBack();
            echo 'Failed to sync ' . $this->table; 
        }

The problem is, if the $dbo->exec($insert); fails, the $dbo->exec("TRUNCATE TABLE {$this->table}"); does not get rolled back. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

攀登最高峰 2024-11-24 03:41:12

TRUNCATE 无法回滚。请改用DELETE

TRUNCATE cannot be rolled back. Use DELETE instead.

吹泡泡o 2024-11-24 03:41:12

假设您使用 MySQL,TRUNCATE TABLE 有一个隐式 COMMIT。来自 http://dev.mysql.com/doc 的文档/refman/5.0/en/truncate-table.html

As of MySQL 5.0.8, truncate operations cause an implicit commit. Before 5.0.8, truncate operations are not transaction-safe; an error occurs when attempting one in the course of an active transaction. 

Assuming you're using MySQL, TRUNCATE TABLE has an implicit COMMIT. From the documentation at http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html :

As of MySQL 5.0.8, truncate operations cause an implicit commit. Before 5.0.8, truncate operations are not transaction-safe; an error occurs when attempting one in the course of an active transaction. 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文