Привет всем ,
Я настроил поведение с поддержкой версий для таблицы «Адрес», но когда я пытаюсь запустить тесты PHPUnit, у меня появляется следующая ошибка:
SQLSTATE [HY000]: общая ошибка: 1205 Превышено время ожидания блокировки;попробуйте перезапустить транзакцию
У меня есть 2 метода 'test *' на моем testCase.Если я оставляю только 1, тогда это работает, если> 1 - тогда я получаю эту ошибку.
Вот код:
класс UserTest extends DbTestCase {
protected $object;
protected function setUp()
{
// zf bootstrap here and doctrine connect
parent::setUp();
// clean/create tmp tables
$this->_prepareDB();
$this->object = new User;
}
public function testGetFullUsername()
{
$model = new User;
$model->email = $email . time();
...
$model->Supplier->Address->firstname = $first_name;
$model->Supplier->Address->lastname = $last_name;
...
$model->UserRight[0]->role = 'Supplier';
$model->UserRight[0]->resource = '*';
$model->UserRight[0]->privilege = '';
$model->save();
}
// it can be even the same
public function testRoles()
{
$model = new User;
$model->email = $email . time();
...
$model->Supplier->Address->firstname = $first_name;
$model->Supplier->Address->lastname = $last_name;
...
$model->UserRight[0]->role = 'Supplier';
$model->UserRight[0]->resource = '*';
$model->UserRight[0]->privilege = '';
$model->save();
}
}
Когда 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); Versionable присоединен к модели 'Address'.проблема.