Оператор JDBC не может удалить строку в определенной таблице MySql - PullRequest
1 голос
/ 01 июня 2011

У меня есть таблица, скажем example1, и я использую инструкцию jdbc, чтобы удалить одну из ее строк. Я пробовал различные методы, от delete from example1 where id = 1 до statement.addbatch(sql), но это не удаляет строку. Если я выполню тот же SQL-оператор в Toad для Mysql, он сможет просто удалить строку.

Странно то, что с помощью jdbc я могу удалять строки из других таблиц просто отлично; только эта таблица дает мне неожиданные результаты.

В этой таблице нет ничего особенного. У него есть первичный ключ и нет связей между ограничениями и внешними ключами.

Кроме того, это удаление является частью транзакции, поэтому для автоматической фиксации установлено значение false, и как только все записи обновляются / вставляются / удаляются, фиксация выполняется. Похоже, что это не имеет никаких проблем с любой другой таблицей, и все обновления / удаления / вставки выполняются просто отлично.

В отношении разрешений эта таблица имеет такое же разрешение для пользователя БД, что и любая другая таблица в БД.

Любые идеи или указатели будут с благодарностью!

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

Включение общей регистрации в базе данных или профилирования в драйвере JDBC покажет вам, что на самом деле идет в базу данных:

http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

Включите профилирование запросов для Connector / J с помощьюдобавив это в строку подключения: profileSQL = true

Общая документация по ведению журналов: http://dev.mysql.com/doc/refman/5.1/en/query-log.html

Существует также mk-query-digest для анализа сетевого трафика и анализа результатов: http://www.maatkit.org/doc/mk-query-digest.html

0 голосов
/ 01 июня 2011

Я сталкивался с такой же ситуацией

Я помню, что в запросе была ошибка Попробуйте выполнить запрос в mysql sqlyog или любом графическом интерфейсе и проверьте, работает ли он, я уверен на 100%, что он не будет работать

затем исправьте запрос и проверьте его

...