Zend framework PHPUnit+;条令+;可版本的+;ZF错误
大家好 我已经为“Address”表设置了可版本行为,但是当我尝试运行PHPUnit测试时,我遇到了以下错误: SQLSTATE[HY000]:一般错误:1205 超过锁定等待超时;尝试 重新启动事务 我的测试用例中有2个“test*”方法。如果我只留下1,那么它工作,如果>1,那么我得到那个错误 代码如下: 类UserTest扩展了DbTestCase { } 当PHPunit运行第二个方法时,事务结束并启动另一个方法:Zend framework PHPUnit+;条令+;可版本的+;ZF错误,zend-framework,doctrine,phpunit,Zend Framework,Doctrine,Phpunit,大家好 我已经为“Address”表设置了可版本行为,但是当我尝试运行PHPUnit测试时,我遇到了以下错误: SQLSTATE[HY000]:一般错误:1205 超过锁定等待超时;尝试 重新启动事务 我的测试用例中有2个“test*”方法。如果我只留下1,那么它工作,如果>1,那么我得到那个错误 代码如下: 类UserTest扩展了DbTestCase { } 当PHPunit运行第二个方法时,事务结束并启动另一个方法: // 1st method // thread id: 412 STAR
// 1st method
// thread id: 412
START TRANSACTION
INSERT INTO user (...) VALUES (...)
INSERT INTO address (...) VALUES ('...')
INSERT INTO address_version (...) VALUES (...)
INSERT INTO supplier (...) VALUES (...)
INSERT INTO user_right (...) VALUES (..)
commit
// 2nd method
// thread id: 413
START TRANSACTION
INSERT INTO user (...) VALUES (...)
INSERT INTO address (..) VALUES (...)
// then new thread created (server disconnects), id: 414
CONNECT xxxxx@localhost on xxxx__tmp_testing
START TRANSACTION
INSERT INTO address_version (...) VALUES (...)
rollback
rollback
它断开了连接,但我不知道为什么。如果我删除了“可版本化”行为,那么它就可以工作了
你能帮帮我吗。我真的很喜欢它,不知道错误原因:(
谢谢你的关注
更新:
原因是“versionable”插件。我们必须在phpunit测试中禁用它:$account->Distributor->Address->getListener()->setOption('disabled',true);
可版本附加到“地址”模型
它解决了这个问题。我在大量的替换/插入查询中也遇到了同样的问题 我可以通过在phpunit中初始化持久连接来解决这个问题
// {{{ getConnection()
/**
* gets database connection
*/
protected function getConnection() {
$pdo = new pdo("mysql:dbname=depage_phpunit;host=localhost", "root", "", array(
\PDO::ATTR_PERSISTENT => true,
));
return $this->createDefaultDBConnection($pdo, 'testdb');
}
// }}}
我对大量的替换/插入查询也有同样的问题 我可以通过在phpunit中初始化持久连接来解决这个问题
// {{{ getConnection()
/**
* gets database connection
*/
protected function getConnection() {
$pdo = new pdo("mysql:dbname=depage_phpunit;host=localhost", "root", "", array(
\PDO::ATTR_PERSISTENT => true,
));
return $this->createDefaultDBConnection($pdo, 'testdb');
}
// }}}
原因是“可版本化”插件。$account->Distributor->Address->getListener()->setOption('disabled',true);它修复了问题。原因是“可版本化”插件。$account->Distributor->Address->getListener()->setOption('disabled',true);它修复了问题。