Wenn ich versuche, eine Tabelle zu löschen, hängt MySQL. Ich habe keine anderen offenen Sitzungen. Wie löst man das? Ich habe 10 Stunden gewartet und der Prozess wurde nicht beendet.Dropping-Tabelle lässt MySQL hängen
Antwort
Waiting for table metadata lock
drop table tableA name
SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10
Wenn dies Ihr Tisch ist, sehen this link
Sie eine implizite Deadlock haben. Beseitigen Sie die anderen Transaktionen, um den Abwurf freizugeben, oder brechen Sie den Abwurf ab, um die anderen Transaktionen freizugeben.
Sie können KILL thread_id in sql_plus verwenden.
Ich füge weitere Informationen hinzu, da ich eine weitere interessante Erfahrung gemacht habe.
Metadata
Riegelschlösser ebenso zwischen einer DDL-Operation an einem bestimmten Tisch (drop
, alter
...) und eine wählt Abfrage auf dieser Tabelle passieren.
Ja, select
.
Also, wenn Sie über einen Cursor in MySQL (oder PHP, zum Beispiel mit pdo::fetch
) Schleife, und Sie eine ddl-Anweisung für die gleiche Tabelle (s) ausführen, erhalten Sie einen Deadlock.
Eine Lösung für dieses atypische Szenario besteht darin, die impliziten Sperren mit einer commit
-Anweisung systematisch freizugeben, nachdem eine SELECT-Anweisung vollständig abgerufen wurde.
Ich habe die Tabelle gelöscht, und jetzt kann ich keine neue Tabelle erstellen, da ich den Fehlercode (28) erhalte: Datei '..' kann nicht auf Festplatte synchronisiert werden. Ich gehe davon aus, dass ich mehr freien Platz hätte, wenn ich den Tisch fallen lasse. –
welche Datei? Ich denke, du solltest den Server neu starten, da das Schloss lange gedauert hat. – Sebas
Wenn ich eine wirklich große create table-Anweisung mit mehreren Spalten ausführen, bekomme ich diese Fehlermeldung. Wenn Sie den Server neu starten, meinen Sie das Beenden und erneutes Verbinden? Wie starte ich den Server? –
MySQL Neustarten vielleicht nicht die schönste Lösung sein, aber es funktioniert für mich:
sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE
'mysql.server restart' funktioniert für mich. –
- 1. WINAPI postquitmessage lässt Fenster hängen
- 2. SignalR lässt IIS nach dem Wiederaufbau hängen
- 3. Rails: SQL-Abfrage lässt Produktionsserver für immer hängen
- 4. Das gleichzeitige Ausführen mehrerer Python-Skripte lässt PHP/Apache hängen
- 5. Aktivieren von Application Insights lässt die Webanwendung hängen
- 6. Mysql lässt Verbindung nach langer Zeit
- 7. Apache/PHP-Prozesse hängen während der Interaktion mit MySQL
- 8. MySQL - LONGTEXT Feld verursacht hängen in SELECT-WHERE-Anweisung
- 9. mySQL phpMyAdmin mit Google Chrome: beim Laden hängen
- 10. Was würde meine MySQL-Abfrage nach zwei Ergebnissen hängen lassen?
- 11. Wie man Mysql-Variablen in einer Abfrage arbeiten lässt
- 12. Java scheint hängen
- 13. Json.createBuilderFactory und createObjectBuilder hängen
- 14. JDBC-Verbindung hängen
- 15. Regexp verursacht unendlich hängen
- 16. Git Klon hängen
- 17. RegisterForRemoteNotificationTypes verursacht UI hängen
- 18. plt.show() macht Terminal hängen
- 19. Einen Prozess hängen
- 20. VS2015 Installation bleibt hängen
- 21. static_assert hängen von Klassenvorlage
- 22. AT-Befehle hängen auf
- 23. gcloud Docker Push hängen
- 24. Flask App gelegentlich hängen
- 25. Python Popen(). Stdout.read() hängen
- 26. Eclipse Hängen in Ubuntu
- 27. Code bleibt hängen?
- 28. Cloud Sql Instanz Neustart für Stunden hängen
- 29. LDAP-Anforderungen hängen für 15 Sekunden
- 30. Mauerwerk lässt viele Räume
Sie bitte das Ergebnis von SHOW ENGINE BDB STATUS schreiben, wenn die Datenbank unter innodb natürlich – Sebas
sieht aus wie die Tabelle Sie versuchen, drop wird bereits verwendet (nun, ich meine, es wurde von einem anderen Prozess gesperrt) und daher wartet es darauf, dass der Prozess festgeschrieben wird. – Rahul
Ich habe die Protokollausgabe hinzugefügt. –