1. ホーム
  2. データベース
  3. その他のデータベース

navicat トランザクションの自動コミット問題について

2022-01-18 07:17:48

最近、navicatを使ってデータベースのテーブルを編集しているときに、いくつかの問題に遭遇しました。
問題:データクリック"✔&quotを編集した後、提出するときnavicatは、スタックし、その後プロンプ"MySqlロック待ちタイムアウトを超えた"、スクリーンショットは今利用できません、要するに、それはタイムアウトを意味します。スクリーンショットは現在ご利用になれません。

理由 色々調べた結果、navicatの自動コミットトランザクションが閉じているため、データを修正した後にコミットされていないトランザクションが発生し、再度データを修正する際に、前のトランザクションを待つ必要があるが、トランザクションがコミットされていないため、タイムアウトすることが判明

解決方法 まず、トランザクションが自動コミットされているかどうかを確認することができます。

show variables like 'autocommit


ご覧の通り、ONになっていれば、トランザクションは自動的にコミットされるので、データを変更した後に自分でコミットする必要はありません。OFFになっている場合は、まず自動コミットをONにする必要があります。

set autocommit=on;

こうすることで、再度データを修正する際にタイムアウトの問題が発生しない~~~~。

ps: Navicat Premiumで、トランザクションを自動的にコミットせずに更新と削除の操作を設定する様子をご紹介します。

まず、MySQLの設定を見ます。

show variables like 'autocommit';

結果は次のようになります。


次に実行します。

set autocommit = 0;
delete from table1 where id =xxx;
commit; or rollback;

この時点で、query: show variables like 'autocommit'; 結果は次のようになるはずです。


注意:このアクションは現在のクエリウィンドウで動作するように設定されており、Navicatを再度開くか、新しいクエリページを作成するときにリセットする必要があります。

以上で、navicat トランザクションの自動コミット問題の解説を終了します。navicat transaction auto-commitの詳細については、スクリプトハウスの過去の記事を検索するか、以下の関連記事を引き続き参照してください。