Wenn es sich um eine Webanwendung handelt und Sie versuchen, die Transaktion von einer Seite zur nächsten festzuhalten, nicht; es wird nicht funktionieren.
Was meinst du mit "kurz danach"? Wenn Sie zwischen den beiden Anweisungen nichts tun, sollte sogar ein Timeout von 1 Sekunde groß genug sein.
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 |
+----------------------------+
Um GLOBAL vs. SESSION für VARIABLEN zu erklären:Der GLOBAL-Wert wird zum Initialisieren verwendet den SESSION-Wert, wenn Ihre Verbindung beginnt. Danach können Sie den SESSION-Wert ändern, um zu beeinflussen, was Sie tun. Und das Ändern des GLOBAL-Werts hat keine Auswirkung auf Ihre aktuelle Verbindung.
Das Ändern des Timeouts auf 1 ist ziemlich sicher (sobald Sie GLOBAL vs SESSION verstanden haben). Das Einzige, was sich ändern wird, ist die Häufigkeit, mit der dieser Fehler auftritt.