Heim >Datenbank >MySQL-Tutorial >Wie kann der Fehler „Tabelle kann nicht erneut geöffnet werden' in temporären MySQL-Tabellen umgangen werden?

Wie kann der Fehler „Tabelle kann nicht erneut geöffnet werden' in temporären MySQL-Tabellen umgangen werden?

Susan Sarandon
Susan SarandonOriginal
2024-11-19 03:05:03228Durchsuche

How to Workaround the

Behebung des Fehlers „Tabelle kann nicht erneut geöffnet werden“ in MySQL

Bei der Datenverarbeitung ist die Fähigkeit, eine Tabelle mehrmals in einer komplexen Abfrage zu verwenden, oft von entscheidender Bedeutung. Bei der Arbeit mit temporären Tabellen in MySQL tritt bei diesem scheinbar einfachen Vorgang jedoch der frustrierende Fehler „Tabelle kann nicht erneut geöffnet werden“ auf.

Hintergrund

Wie von Kris beschrieben, Eine komplexe Abfrage mit mehreren INNER JOINS für eine temporäre Tabelle führt zu dem Fehler. Dies liegt daran, dass MySQL nicht zulässt, dass temporäre Tabellen mehrmals innerhalb derselben Abfrage geöffnet werden.

Problemumgehung

Um diese Einschränkung zu umgehen, besteht eine einfache, aber effektive Lösung darin: Duplizieren Sie die temporäre Tabelle und erstellen Sie im Wesentlichen zwei identische Versionen. Dies funktioniert besonders gut, wenn die temporäre Tabelle relativ klein ist, was häufig der Fall ist.

Implementierung

Die folgenden Schritte beschreiben die Implementierung dieser Problemumgehung:

  1. Erstellen Sie die temporäre Tabelle:
CREATE TEMPORARY TABLE search (baseID INT, condition TEXT);
  1. Füllen Sie die aus temporäre Tabelle mit Daten:
INSERT INTO search (baseID, condition) VALUES (1, 'condition1'), (1, 'condition2'), ...;
  1. Jetzt duplizieren Sie die temporäre Tabelle:
CREATE TEMPORARY TABLE search_copy AS SELECT * FROM search;
  1. Sie können die duplizierte Tabelle jetzt als verwenden so oft wie nötig in Ihrem Komplex Abfrage:
SELECT
  *
FROM search
INNER JOIN search_copy f1 ON f1.baseID = search.baseID AND f1.condition = condition1
INNER JOIN search_copy f2 ON f2.baseID = search.baseID AND f2.condition = condition2
...
INNER JOIN search_copy fN ON fN.baseID = search.baseID AND fN.condition = conditionN;

Vorteile

Diese Problemumgehung bietet mehrere Vorteile:

  • Einfachheit: Es ist auch für Jugendliche einfach umzusetzen Entwickler.
  • Effektivität: Es beseitigt den Fehler „Tabelle kann nicht erneut geöffnet werden“ und ermöglicht komplexe Abfragen mit temporären Tabellen.
  • Speicherplatzeffizienz: Das Duplizieren der temporären Tabelle verbraucht keinen zusätzlichen Speicherplatz auf dem Server.

Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Tabelle kann nicht erneut geöffnet werden' in temporären MySQL-Tabellen umgangen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn