zoukankan      html  css  js  c++  java
  • ThinkPHP v3.2.3 数据库读写分离,开启事务时报错:There is no active transaction

    如题:ThinkPHP v3.2.3 数据库读写分离,开启事务时报错:

    ERR: There is no active transaction

    刚开始以为是数据表引擎不对造成的,因为 有几张表的引擎是 MyISAM,后来调整过来了,改为 InnoDB,还是报错。应该是TP 底层连数据库时,切换数据库连接时出了点问题,解决方案如下:

    打开文件 ThinkPHP/Library/Think/Db/Driver.class.php,调整内容如下:

    /**
     * 启动事务
     *
     * @access public
     * @return void
     */
    public function startTrans() {
    	$this->initConnect(true);
    	if ( !$this->_linkID ) return false;
    	// 数据rollback 支持
    	if ($this->transTimes == 0) {
    		//$this->_linkID->beginTransaction(); // by 52php.cnblogs.com
    		foreach ($this->linkID as $_linkId) {
    			$_linkId->beginTransaction();
    		}
    	}
    	$this->transTimes++;
    	return ;
    }
    
    /**
     * 用于非自动提交状态下面的查询提交
     *
     * @access public
     * @return boolean
     */
    public function commit() {
    	if ($this->transTimes > 0) {
    		//$result = $this->_linkID->commit(); // by 52php.cnblogs.com
    		foreach ($this->linkID as $_linkId) {
    			$result = $_linkId->commit();
    		}
    
    		$this->transTimes = 0;
    		if(!$result){
    			$this->error();
    			return false;
    		}
    	}
    	return true;
    }
    
    /**
     * 事务回滚
     *
     * @access public
     * @return boolean
     */
    public function rollback() {
    	if ($this->transTimes > 0) {
    		//$result = $this->_linkID->rollback(); // by 52php.cnblogs.com
    		foreach ($this->linkID as $_linkId) {
    			$result = $_linkId->rollback();
    		}
    
    		$this->transTimes = 0;
    		if(!$result){
    			$this->error();
    			return false;
    		}
    	}
    	return true;
    }

    问题解决!

  • 相关阅读:
    平易近人、兼容并蓄——Spark SQL 1.3.0概览
    System.getProperty
    Apache Commons CLI 简介
    The declared package does not match the expected package
    Maven常用命令
    使用SBT构建Scala应用(转自git)
    Area Under roc Curve(AUC)
    用特征来实现混入(mix-in)式的多重继承
    暗时间
    SVN如何commit(提交)项目代码
  • 原文地址:https://www.cnblogs.com/52php/p/6089110.html
Copyright © 2011-2022 走看看