У меня есть приложение php, которое вставляет строки в таблицу A, очень простой запрос.
Работает каждые 10-15 минут.
До прошлой недели с ним не было никаких проблем, но после сбоя диска я перенес db на другой сервер, и эта проблема начала возникать.
Нет ошибок возврата, ничего в журналах, но мои вставки отсутствуют.
Есть цикл, который вставляет новую строку для каждого цикла.
После каждой вставки я проверяю наличие mysqli_insert_id и записываю его в файл.
Затем я запускаю запрос SELECT, чтобы проверить, действительно ли это основное поле находится в таблице, да, это так.
количество затронутых рядов равно 1.
Но когда я запускаю запрос SELECT из другого соединения mysql, до того, как PHP прекратит выполнение (так что соединение все еще работает), ничего не появляется.
Это похоже на автоматический откат, но я не нашел взаимоблокировок, использовал pt-deadlock-logger;
http://www.percona.com/doc/percona-toolkit/2.1/pt-deadlock-logger.html
Я не знаю, есть ли что-нибудь еще, что вызывает автоматический откат.
Кстати, я также обнаружил, что в этом цикле PHP есть другие INSERT-запросы, и они тоже не вставлены.
MySQL: 5.6.21
Двигатель: InnoDB
Я обнаружил проблему, где-то глубоко в коде нашего приложения я обнаружил, что этот запрос иногда выполняется;
SET autocommit = 0
И оно никогда не возвращается к 1.
Других решений пока нет …