wer*_*erd 9 magento database-deadlocks
我正在使用Magento 1.7.0.2社区版,我遇到了一个大问题 - 死锁和"锁定等待超时超时"错误.执行特定CRON任务时 存在问题
所以我的问题 - 有没有办法如何避免这种情况(无论是在PHP,MySQL还是服务器(我们使用nginx)级别)?
我在试图同时导入超过五六种产品时遇到了这个问题.有关死锁的更多信息,请点击此处.
要解决这个问题,我必须尽可能将数据库查询放在SERIALIZABLE事务中,如下所示:
$adapter = Mage::getModel('core/resource')->getConnection('core_write');
// Commit any existing transactions (use with caution!)
if ($adapter->getTransactionLevel > 0) {
$adapter->commit();
}
$adapter->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE');
$product->save(); // etc
Run Code Online (Sandbox Code Playgroud)
交易示例:
$adapter = Mage::getModel('core/resource')->getConnection('core_write');
// Commit any existing transactions (use with caution!)
if ($adapter->getTransactionLevel > 0) {
$adapter->commit();
}
$adapter->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE');
$adapter->beginTransaction();
try {
$adapter->query(/* SQL goes here */);
$adapter->commit();
} catch (Exception $e) {
// Rollback on fail always
$adapter->rollBack();
throw $e;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要任何进一步的帮助,请随时告诉我.