Я пишу приложение в VB.Net, которое работает через драйвер MySQL ODBC 3.51 с данными, хранящимися в базе данных MySQL. Пытаясь симулировать одновременный доступ, у меня открыта MySQL Workbench и мое приложение.
В Workbench я блокирую некоторые записи:
begin;
select * from tbltest where test like 'test%' for update;
В моем приложении я запрашиваю базу данных MySQL:
SELECT COUNT(*) FROM information_schema.innodb_trx;
И поскольку активная транзакция существует, я правильно получаю «1».
Я откатываю транзакцию в Workbench и пробую то же самое наоборот. На этот раз я запускаю транзакцию в моем приложении с точно таким же кодом SQL:
begin;
select * from tbltest where test like 'test%' for update;
Но когда я тогда запрашиваю information_schema.innodb_trx в Workbench, я получаю «0»: Workbench не находит активную транзакцию.
Однако когда я изменяю код на следующий, Workbench и мое приложение правильно находят активную транзакцию:
begin;
select * from tbltest for update;
Как может случиться, что в первом случае мое приложение VB.Net не найдет транзакцию, а во втором - нет? Может ли быть более общая проблема с драйвером ODBC MySQL?
Спасибо!