1. ホーム
  2. php

[解決済み] innodb_lock_wait_timeout 増加タイムアウト

2022-02-12 11:55:29

質問

MySQLデータベースを使用しており、挿入直後にレコードを更新しようとすると、次のエラーが発生します。 ER_LOCK_WAIT_TIMEOUT: Lock wait timeout exceeded; try restarting transaction . そこで、次のクエリでタイムアウトを減らしています。

set GLOBAL innodb_lock_wait_timeout=1

そこで質問です。 は、そのようなことをしてもいいのでしょうか?それは、パフォーマンスの問題など、他の問題につながるのでしょうか?

ありがとうございました。

どのように解決するのですか?

これがWebアプリケーションで、あるページから次のページへのトランザクションを保持しようとしている場合。 ドンマイ うまくいきません。

just after"とはどういう意味ですか? 2つのステートメントの間に何もしないのであれば、1秒のタイムアウトでも十分大きいはずです。

mysql> SET GLOBAL innodb_lock_wait_timeout = 1;
mysql> SELECT @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
|                         50 |
+----------------------------+
mysql> SET SESSION innodb_lock_wait_timeout = 1;
mysql> SELECT @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
|                          1 |
+----------------------------+

VARIABLESのGLOBALとSESSIONについて説明すると、GLOBALの値は次のように使われます。 初期化 接続開始時にSESSIONの値を変更します。 その後、SESSION値を変更することで、あなたが行っていることに影響を与えることができます。 また、GLOBAL 値を変更しても、あなたの 現在 接続になります。

タイムアウトを1に変更することは、(GLOBALとSESSIONを理解すれば)非常に安全です。 変わるのは、そのエラーが出る頻度だけです。