[解決済み] MySQLのオープントランザクションを表示する
質問
コミットせずにいくつかのクエリを実行しました。その後、アプリケーションは停止しました。
これらのオープンなトランザクションを表示し、コミットまたはキャンセルするにはどうすればよいですか。
どのように解決するのですか?
<ブロッククオート開いているトランザクションを表示し、コミットまたはキャンセルするにはどうすればよいですか?
MySQLは切断時にトランザクションをロールバックするため、開いているトランザクションはありません。
トランザクションをコミットすることはできません(IFAIK)。
スレッドを表示するには
SHOW FULL PROCESSLIST
ご覧ください。 http://dev.mysql.com/doc/refman/5.1/en/thread-information.html
壊れた接続からトランザクションをコミットすることはできないので、それは役に立ちません。
接続が切れるとどうなるのでしょうか
MySQLのドキュメントから。
http://dev.mysql.com/doc/refman/5.0/en/mysql-tips.html
4.5.1.6.3. mysql の自動再接続の無効化
mysql クライアントがステートメントを送信中にサーバとの接続を失った場合、即座に自動的にサーバに一度再接続し、ステートメントを再度送信しようと試みます。 しかし たとえ mysql が再接続に成功しても、最初の接続は終了しており、以前のすべてのセッションオブジェクトと設定は が失われます。 一時テーブル、自動コミットモード、ユーザ定義変数やセッション変数などです。また 現在のトランザクションはすべてロールバックされます。 .
この動作は、次の例のように、サーバがシャットダウンされ、知らない間に最初のステートメントと2番目のステートメントの間で再起動された場合、あなたにとって危険な場合があります。
も参照してください。 http://dev.mysql.com/doc/refman/5.0/en/auto-reconnect.html
診断方法と修正方法
自動再接続を確認するため。
自動再接続が発生した場合(たとえば mysql_ping() を呼び出した結果)、そのことを明示的に示すものはありません。再接続を確認するには
mysql_thread_id()
を呼び出して元の接続識別子を取得してからmysql_ping()
を呼び出したら、次にmysql_thread_id()
を再度呼び出し、識別子が変更されたかどうかを確認します。
必要であれば再送信できるように、最後のクエリ(トランザクション)をクライアントに残しておくようにしてください。
そして、自動再接続モードは危険なので無効にし、代わりに独自の再接続を実装して、ドロップが発生したときにそのクエリを再送信できるようにします。
関連
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] ずっとUTF-8
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み] MySQL のライブクエリを表示するにはどうすればよいですか?
-
[解決済み】PHP + MySQL トランザクションの例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ジョイントインデックスのためのmysqlの条件とインデックスが失敗するための条件
-
SQL基本クエリステートメント
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
[解決済み】マルチパート識別子をバインドできない
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
Djangoマイグレーションエラー 外部キー制約を追加できない
-
CMakeエラー。ソースディレクトリ "/xxx/mysql-5.6.21" に CMakeLists.txt がないようです。
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?