Тайм-аут блокировки транзакции MySql (1205) при вставке в две базы данных с внешним ключом на первичной
У меня есть две базы данных в MySQL, работающие с innoDB, и второй БД имеет внешний ключ, связанный с первичным ключом первого.
В моем коде мне нужно вставить в первую БД и получить идентификатор для этого и вставить во вторую.
Все идет хорошо, если я не запускаю транзакцию, и это блокирует первую БД для нового идентификатора, а вторая не может вставить этот идентификатор, и я получаюSQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
, Когда я удаляю внешний ключ, тогда все идет хорошо.
Я должен упомянуть, что я использую PHP PDO для подключения к MySql, и я создаю отдельное соединение с каждой БД, и я также не могу зафиксировать первую транзакцию БД, чтобы выполнить вторую, потому что мне нужно убедиться, что все транзакции ко всем БД проходят нормально. весь процесс, а затем начать совершать их.
Спасибо Рамин
1 ответ
Похоже, что единственным решением будет либо зафиксировать первую БД и запустить транзакцию во второй, либо удалить внешний ключ между БД.
Пожалуйста, дайте решения, если вы найдете лучший вариант, и я приму это как ответ в любое время в будущем.
Спасибо Рамин