如何在付款操作失败后禁用Magento中的MySQL查询回滚?

时间:2011-02-25 12:55:43

标签: mysql magento rollback

我在Magento编写了一个手动脚本,用于在付款流程中记录我的交易。成功事务后MySQL查询工作正常,我可以在MySQL中看到数据。但是我的查询在不成功的付款后回滚(看起来像插入和删除)。当我查看我的MySQL表时,我可以看到自动增量增加但没有数据。

我的代码如下。如何阻止Magento回滚我的查询?

$conn = Mage::getSingleton('core/resource')->getConnection('core_write');
$results = $conn->query("insert into pos_transactions(order_id, transaction_time, ip, type) values('$orderId', '$sysDate', '$ip', 'Auth')");

3 个答案:

答案 0 :(得分:0)

这对我有用(在Magento Enterprise Edition 1.10中测试):

$ inSql =“INSERT INTO my_table(fieldAfieldB)”;

    $ inSql。=“VALUES('$ valueA','$ valueB'); commit;”;     法师:: getSingleton( '芯/资源') - >的getConnection( 'core_write') - >查询($ INSQL);

我希望这适合你。

答案 1 :(得分:0)

set table DB engine = MYISAM; 因为MYISAM不支持事务提交和回滚功能。

http://en.wikipedia.org/wiki/MyISAM (MyISAM的主要缺点是没有交易支持。)

答案 2 :(得分:0)

你可以使用:

$conn = Mage::getModel('core/resource')->getConnection('core_write');

而不是

$conn = Mage::getSingleton('core/resource')->getConnection('core_write');

Magento将创建一个与数据库的新连接,因为您没有使用Singleton,并且这个新连接不会有任何打开的事务。