1

たとえば、テーブルがありexample1、jdbcステートメントを使用してその行の1つを削除しています。delete from example1 where id = 1からまでさまざまな方法を試しましstatement.addbatch(sql)たが、行が削除されません。Toad for Mysqlで同じSQLステートメントを実行すると、行を正常に削除できます。

奇妙なことに、jdbcを使用すると、他のテーブルから行を問題なく削除できます。予想外の結果をもたらしたのは、この1つの特定のテーブルだけです。

このテーブルには特別なことは何もありません。主キーがあり、制約/外部キーの関係はありません。

また、この削除はトランザクションの一部であるため、自動コミットがに設定されfalse、すべてのレコードが更新/挿入/削除されると、コミットが実行されます。これは他のテーブルでは問題がないようで、すべての更新/削除/挿入は問題なく実行されます。

パーミッションに関して、このテーブルは、dbユーザーに対してdb内の他のテーブルと同じパーミッションを持っています。

任意のアイデアやポインタは大歓迎です!

4

2 に答える 2

0

データベースでの一般的なログ記録または 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

于 2011-06-01T03:07:03.960 に答える
0

私は同じ状況に遭遇しました

クエリに間違いがあったことを覚えています。mysql sqlyog または任意の GUI でクエリを実行してみて、機能するかどうかを確認してください。機能しないことは 100% 確信しています。

次に、クエリを修正して確認します

于 2011-06-01T02:50:56.873 に答える