如果我比较两个Magento适配器类Varien_Db_Adapter_Mysqli和Varien_Db_Adapter_Pdo_Mysql,我可以在方法raw_query的查询异常处理中找到一些差异.
<?php
class Varien_Db_Adapter_Mysqli extends Zend_Db_Adapter_Mysqli
{
//....
/**
* Run RAW Query
*
* @param string $sql
* @return Zend_Db_Statement_Interface
*/
public function raw_query($sql)
{
$timeoutMessage = 'SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction';
$tries = 0;
do {
$retry = false;
try {
$this->clear_result();
$result = $this->getConnection()->query($sql);
$this->clear_result();
} catch (Exception $e) {
if ($tries < 10 && $e->getMessage() == $timeoutMessage) {
$retry = true;
$tries++;
} else …Run Code Online (Sandbox Code Playgroud)