我想将database
复制到另一个位置,我不希望它位于另一个用户transaction
的中间位置。有没有办法锁定database
?
答案 0 :(得分:0)
覆盖 CActiveRecord 的getDbConnection()
并添加其他属性,例如private $inUse
,然后检查此项是否正在使用,
或者有一张表,但每次检查都会很慢。
答案 1 :(得分:0)
我使用PostgreSQL。要备份数据库,它使用外部工具(pg_dump)来获取数据库的稳定且一致的快照。如果正在进行事务,则快照将具有事务开始之前的状态。我认为MySQL有一个类似的工具。
无论您使用什么数据库服务器,如果您想知道是否存在活动事务,您都可以使用数据库的标准PDO object:
$db=Yii::app()->db;
$pdo=$db->getPdoInstance();
if ($pdo->inTransaction(){
echo "We have an active transaction";
} else {
echo "Let's start Database dump";
}