Как я могу отобразить эти открытые транзакции и зафиксировать или отменить их?
Нет открытой транзакции, MySQL откатит транзакцию при отключении.
Вы не можете совершить транзакцию (IFAIK).
Вы отображаете темы, используя
SHOW FULL PROCESSLIST
См .: http://dev.mysql.com/doc/refman/5.1/en/thread-information.html
Это не поможет вам, потому что вы не можете совершить транзакцию из разорванного соединения.
Что происходит при разрыве соединения
Из документов MySQL: http://dev.mysql.com/doc/refman/5.0/en/mysql-tips.html
4.5.1.6.3. Отключение автонастройки mysql
Если клиент mysql теряет соединение с сервером при отправке выписки, он немедленно и автоматически пытается повторно подключиться к серверу и снова выслать выписку. Однако , даже если mysql преуспевает в повторном соединении, ваше первое соединение завершилось, и все ваши предыдущие объекты сеанса и настройки потеряны : временные таблицы, режим автоматической фиксации, а также пользовательский и сеанс переменные. Также любая текущая транзакция откатывается .
Это поведение может быть опасным для вас, как в следующем примере, когда сервер был выключен и перезапущен между первым и вторым операторами без вашего ведома:
Также см .: http://dev.mysql.com/doc/refman/5.0/en/auto-reconnect.html
Как диагностировать и исправить это
Для проверки автоматического переподключения:
Если происходит автоматическое переподключение (например, в результате вызова mysql_ping ()), явного указания на это нет. Чтобы проверить переподключение, позвоните mysql_thread_id()
, чтобы получить исходный идентификатор соединения, прежде чем вызывать mysql_ping()
, затем снова наберите mysql_thread_id()
, чтобы узнать, изменился ли идентификатор.
Убедитесь, что ваш последний запрос (транзакция) хранится на клиенте, чтобы вы могли повторно отправить его при необходимости.
И отключите режим автоматического переподключения, потому что это опасно, вместо этого внедрите свое собственное переподключение, чтобы вы знали, когда произошло отбрасывание, и можете повторно отправить этот запрос.