[解決済み】トランザクションを使用していないのに「ロック待ちのタイムアウトを超えましたので、トランザクションを再起動してください」と表示される
2022-03-25 08:40:32
質問
次のようなMySQLを実行しています。
UPDATE
ステートメントを使用します。
mysql> update customer set account_import_id = 1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
トランザクションを使用していないのに、なぜこのようなエラーが発生するのでしょうか?MySQLサーバーの再起動も試しましたが、解決しませんでした。
テーブルには 406,733 行があります。
解決方法は?
トランザクションを使用しています。オートコミットはトランザクションを無効にするのではなく、ステートメントの最後で自動的にコミットするようにするだけです。
何が起こっているかというと、他のスレッドがあるレコード(あなたはテーブルのすべてのレコードを更新しています!)に対してレコードロックを長く保持しており、あなたのスレッドがタイムアウトしているのです。
を発行することで、イベントの詳細を確認することができます。
SHOW ENGINE INNODB STATUS
の後に(SQLエディタで)表示します。理想的には、静かなテストマシンでこれを行います。
関連
-
[解決済み】MySQLの「ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションを再起動してみてください」を回避する方法
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み】MySQL 派生テーブルはすべて独自のエイリアスを持つ必要があります。
-
コマンドでmysqlに接続中、'mysql'が内部または外部コマンドとして認識されない エラーは解決されました。
-
[解決済み】MySQL エラー #1133 - ユーザー テーブルに一致する行が見つかりません。
-
[解決済み] MySQLで週単位でグループ化する方法は?
-
[解決済み] MySQLを使用したパーセンタイル値の計算
-
[解決済み] ローカルマシンからリモートDBをmysqldumpする方法
-
[解決済み] 日付の挿入時にエラーが発生しました - 日付の値が正しくありません。
-
[解決済み] MySQLで "no "キーワードは何に使うのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SQL ZOO 各大陸とアルファベット順で1位の国名をリストアップする
-
[解決済み] テーブル 'performance_schema.session_variables' は存在しません。
-
[解決済み] ローカルマシンからリモートDBをmysqldumpする方法
-
[解決済み] テーブルのストレージエンジンは修復をサポートしていません。InnoDB または MyISAM?
-
[解決済み] 「他のデータベースへのクエリを無視する」コマンドライン
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] mysqlのテーブルからユニークキーを削除する方法
-
[解決済み] エラー1022 - 書き込みできません; テーブルに重複したキーがあります。
-
[解決済み] dpkg: error processing package mysql-server (dependency problems)?
-
[解決済み] MySQLで "no "キーワードは何に使うのですか?