wes*_*ide 6 php mysql zend-framework transactions
好吧,让我先把它弄清楚.我的问题与此类似: 无法在Zend Framework中回滚事务
我的表永远都是innoDB.我检查了有问题的表,它确实是innoDB.关于问题..
我有一个数据库实例,并且通过此事务运行的模型实例命中同一个数据库:
$db->beginTransaction();
try {
// Run an insert
$model_record->insert(array('single_item' => 'its value'));
// More logic, and run an update.
$model_record->this_value = 'that';
// Save it
$model_record->save();
//Commit the transaction
$db->commit();
} catch (Exception $e) {
// It finds the rollback, yet does nothing.
$db->rollBack();
}
Run Code Online (Sandbox Code Playgroud)
现在,我发现这不起作用的原因是我在测试期间超出了一行的字符限制,以确保所有逻辑都正确.
它没有回滚.最重要的是,带有'single_item'的记录在数据库中.但更新的价值观并非如此.
我完全错过了一些小的东西,我从来没有遇到MySQL和innoDB的交易问题.这可能是MySQL相关的还是ZF相关的?任何见解都很有帮助,谢谢.
更新:
我一直在进行一些测试,这里有一些结果可能会有所帮助:
$this->_db->beginTransaction();
// This works
$this->_db->insert('table_a',
array(
'a_field' => 'transaction test',
)
);
// This does not work, at all. It inserts and does not rollback. There is no commit.
$_table_a_model->insert(
array(
'a_field' => 'transaction test',
)
);
$this->_db->rollback();
Run Code Online (Sandbox Code Playgroud)
其他更新 您需要获取模型的实例,并在其上调用事务.
$the_model = $this->_model->getAdapter();
$the_model->beginTransaction();
Run Code Online (Sandbox Code Playgroud)
这为多个表的事务留下了空间,而不为每个模型实例执行多个事务.没有恢复到基础数据库实例的任何想法?
我想到了。我必须使用它$db = Zend_Db_Table_Abstract::getDefaultAdapter();,然后运行我的事务,以便多个模型中的所有操作在单个事务下协同工作。如果有人对此有解决办法,请随时发表评论。
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |