496 Stimmen

Wie löse ich den Fehler "Error: MySQL wurde unerwartet heruntergefahren"?

Wenn ich XAMPP öffne und auf die Schaltfläche "MySQL starten" klicke, erhalte ich einen Fehler. Ich hatte es gerade erst gestartet, aber jetzt funktioniert es nicht.

12:19:12 PM [mysql] Versuche MySQL-App zu starten...
12:19:12 PM [mysql] Statusänderung erkannt: läuft
12:19:13 PM [mysql] Statusänderung erkannt: gestoppt
12:19:13 PM [mysql] Fehler: MySQL unerwartet beendet.
12:19:13 PM [mysql] Dies könnte auf einen blockierten Port, fehlende Abhängigkeiten, falsche Berechtigungen, einen Absturz oder ein Herunterfahren durch eine andere Methode zurückzuführen sein.
12:19:13 PM [mysql] Drücken Sie die Schaltfläche Protokolle, um Fehlerprotokolle anzuzeigen und überprüfen
12:19:13 PM [mysql] den Windows Event Viewer für weitere Hinweise.
12:19:13 PM [mysql] Wenn Sie weitere Hilfe benötigen, kopieren Sie dieses
12:19:13 PM [mysql] gesamte Protokollfenster und posten Sie es in den Foren

Hier ist der Inhalt des Fehlerprotokolls:

2013-08-02 12:19:12 4536 [Hinweis] Plugin 'FEDERATED' ist deaktiviert.
2013-08-02 12:19:12 f64 InnoDB: Warnung: Die Verwendung von innodb_additional_mem_pool_size ist VERALTET. Diese Option kann in zukünftigen Versionen zusammen mit der Option innodb_use_sys_malloc und dem internen Speicheralloktor von InnoDB entfernt werden.
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Der InnoDB-Speicherhaufen ist deaktiviert.
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Mutexe und rw_locks verwenden Windows-interne Funktionen
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Komprimierte Tabellen verwenden zlib 1.2.3
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Keine Verwendung von CPU crc32-Anweisungen
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Initialisierung des Pufferpools, Größe = 16,0M
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Initialisierung des Pufferpools abgeschlossen
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Höchst unterstütztes Dateiformat ist Barracuda.
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Die Log-Sequenznummern 0 und 0 in ibdata-Dateien stimmen nicht mit der Log-Sequenznummer 1616798 in den ib_logfiles überein!
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Die Datenbank wurde nicht ordnungsgemäß heruntergefahren!
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Starte Crash-Recovery.
2013-08-02 12:19:12 4536 [Hinweis] InnoDB: Lese Tablespace-Informationen aus den .ibd-Dateien...

Die wichtigste Fehlermeldung lautet hier:

2013-08-02 12:19:12 4536 [FEHLER] InnoDB:
Versuchte, einen zuvor geöffneten Tablespace zu öffnen.
Vorheriger Tablespace mysql/innodb_table_stats verwendet die Space-ID: 1 im Dateipfad: .\mysql\innodb_table_stats.ibd.
Kann Tablespace xat/payments nicht öffnen, der die Space-ID: 1 im Dateipfad: .\xat\payments.ibd verwendet

Der Rest des Protokolls:

InnoDB: Fehler: Die einzelne Tabellen-Tablespace-Datei .\xat\payments.ibd konnte nicht geöffnet werden
InnoDB: Wir setzen die Crash-Recovery nicht fort, da die Tabelle beschädigt werden könnte
InnoDB: wenn wir die Logdatensätze im InnoDB-Log nicht darauf anwenden können.
InnoDB: Um das Problem zu lösen und mysqld zu starten:
InnoDB: 1) Wenn es ein Berechtigungsproblem in der Datei gibt und mysqld die
InnoDB: Datei nicht öffnen kann, sollten Sie die Berechtigungen ändern.
InnoDB: 2) Wenn die Tabelle nicht benötigt wird oder Sie sie aus einem Backup wiederherstellen können,
InnoDB: können Sie die .ibd-Datei entfernen, und InnoDB wird eine normale
InnoDB: Crash-Recovery durchführen und diese Tabelle ignorieren.
InnoDB: 3) Wenn das Dateisystem oder die Festplatte defekt ist und Sie die
InnoDB: .ibd-Datei nicht entfernen können, können Sie innodb_force_recovery > 0 in my.cnf setzen
InnoDB: und InnoDB zwingen, die Crash-Recovery fortzusetzen.

Was ist die Ursache dieser Fehler und wie kann ich sie beheben?

15voto

Eric Leschinski Punkte 134271

Ich habe denselben Fehler in meiner C:\xampp\mysql\data\mysql_error.log erhalten, als ich versucht habe, mysql zu starten.

2013-08-05 01:20:32 6780 [FEHLER] InnoDB: Versuch, einen zuvor geöffneten 
  Tablespace zu öffnen. Der vorherige Tablespace mysql/slave_relay_log_info verwendet 
  Space ID: 3 im Dateipfad: .\mysql\slave_relay_log_info.ibd. Kann den 
  Tablespace test_database/test_table nicht öffnen, der Space ID: 3 im Dateipfad 
  verwendet: .\test_database\test_table.ibd

Sie müssen den Fehler genau lesen. Dies besagt, dass test_database verhindert, dass mysql startet.

Sie könnten die betreffende Datenbank löschen, diese Schritte beheben das Problem:

  1. Stellen Sie sicher, dass mysql und xampp vollständig heruntergefahren sind.
  2. Gehen Sie in das Verzeichnis, in dem mysql installiert ist, meins ist: C:\xampp\mysql\data
  3. Sie sollten einen Ordner mit dem Namen einer von Ihnen erstellten Datenbank sehen. Meins war test_database.
  4. Erstellen Sie anderswo einen neuen Ordner namens C:\xampp\mysql\data\mysql\backuptablespace
  5. Ziehen Sie den betreffenden Datenbanktabellenordner in das Backup-Verzeichnis (nicht löschen).
  6. Versuchen Sie erneut, mysql zu starten. Bei mir hat es sofort in 1 Sekunde gestartet, wie erwartet.

Wenn es nicht funktioniert, verschieben Sie die Datei zurück an die Stelle, an der Sie begonnen haben, und Sie sind wieder am Anfang.

Wenn Sie die Datenbank nicht löschen möchten und keine Backups haben:

Wenn Sie keine Backups der Tabellendaten haben und mysql nicht gestartet wird, weil etwas beschädigt ist, müssen Sie den Prozess der Eliminierung verwenden, um den genauen Fehler zu erraten und zu überprüfen. Befolgen Sie diese Schritte:

  1. Erstellen Sie einen Klon des gesamten C:\xampp\ und speichern Sie ihn sicher, damit Sie wieder dorthin zurückkehren können, wo Sie angefangen haben.

  2. Verwenden Sie einen "binären Such" Ansatz, um das beschädigte Element in der mysql-Datenbank zu lokalisieren. Es könnte eine Datei, eine Tabelle, eine Datenbank, ein Benutzer oder irgendetwas anderes sein.

  3. Löschen Sie die gesamte Datenbank und prüfen Sie, ob mysql startet. Wenn dies der Fall ist, setzen Sie die Datenbank zurück und versuchen Sie, einige der Tabellen zu entfernen. Wenn nicht, versuchen Sie etwas anderes herauszunehmen, bis es startet.

  4. Versuchen Sie diese Dateien aus C:\xampp\mysql\data\mysql zu entfernen: db.frm db.MRD db.MYI db.opt user.frm user.MYD user.MYI

  5. Wenn es Ihnen gelingt, mysql zu starten, setzen Sie die Dinge zurück, bis Sie das eine Element finden, das das Starten verhindert. Ein Bonus dabei ist, dass Sie lernen, wie mysql unter der Haube funktioniert.

Nuklearoption:

Etwas, das Sie getan haben, hat den mysql-Server durcheinander gebracht. Eine Deinstallation und Neuinstallation von XAMPP sollte die Beschädigung rückgängig machen.

14voto

Swap Punkte 165

Schritt 1: Schließen Sie den Xampp-Controller vollständig
Schritt 2: Öffnen Sie C:\xampp\mysql\backup
Schritt 3: Kopieren Sie alle Dateien aus dem Backup-Ordner
Schritt 4: Öffnen Sie C:\xampp\mysql\data
Schritt 5: Fügen Sie alle Dateien in den Datenordner ein
Schritt 6: Starten Sie den Xampp-Controller neu

14voto

aog Punkte 484

Fügen Sie die folgende Zeile unterhalb des Abschnitts [mysqld] in der MySQL-Konfigurationsdatei (my.ini) hinzu und starten Sie anschließend den Apache-Webserver und den MySQL-Dienst neu.

[mysqld]
innodb_force_recovery = 4

13voto

matinict Punkte 2312

Mein Xampp MySQL hat genau wie folgt funktioniert:

01. Gehe zum mysql/data/ Verzeichnis
02. Lösche die Dateien ibdata1 & ib_logfile*(ib_logfile0,ib_logfile1,ib_logfile101)
03. Starte den xampp Server neu

12voto

Nie löschen Sie diese Datei (ibdata1), weil alle Ihre Daten gelöscht werden!!!
Ich schlage drei Möglichkeiten vor :

A:
1- Beenden Sie das XAMPP-Bedienfeld.
1- Benennen Sie den Ordner mysql/data in mysql/data_old um (Sie können jeden Namen verwenden)
2- Erstellen Sie einen neuen Ordner mysql/data
3- Kopieren Sie den Inhalt, der sich in mysql/backup befindet, in den neuen mysql/data-Ordner
4- Kopieren Sie alle Ihre Datenbankordner, die sich in mysql/data_old befinden, in mysql/data (überspringen Sie dabei die Ordner mysql, performance_schema und phpmyadmin aus data_old)
5- Kopieren Sie abschließend die Datei ibdata1 aus mysql/data_old und ersetzen Sie sie im Inneren des mysql/data-Ordners
6- Starten Sie Ihr System neu.

B:
1- Stoppen Sie alle SQL-Dienste.
2- Starten Sie danach alle SQL-Dienste erneut.

Bildbeschreibung hier eingeben

C:
1- Öffnen Sie das XAMPP-Bedienfeld
2- Klicken Sie auf die Schaltfläche Config, vor mysql, klicken Sie auf my.ini

Bildbeschreibung hier eingeben

3- Ändern Sie den Client-Port und den Server-Port.

Bildbeschreibung hier eingeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X