Zend framework PHPUnit+;条令+;可版本的+;ZF错误

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

大家好

我已经为“Address”表设置了可版本行为,但是当我尝试运行PHPUnit测试时,我遇到了以下错误:

SQLSTATE[HY000]:一般错误:1205 超过锁定等待超时;尝试 重新启动事务

我的测试用例中有2个“test*”方法。如果我只留下1,那么它工作,如果>1,那么我得到那个错误

代码如下:

类UserTest扩展了DbTestCase {

}

当PHPunit运行第二个方法时,事务结束并启动另一个方法:

// 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);它修复了问题。