Beschädigung der Datenbank mit MariaDB : Tabelle existiert nicht in den Motor
Ich bin in einer Umwelt-setup, unter OSX mit MariaDB 10.0.12-MariaDB Homebrew
Habe ich geschraubt bis die installation also habe ich komplett entfernt MySQL und MariaDB aus meinem setup wieder gestartet.
Nach Abschluss der Installation von MariaDB, ich habe nach meiner Datenbanken (innoDB
) über einen DB-Dump von der Produktions-server. Es hat gut funktioniert.
Nach einem Neustart, der Tag danach, kann ich keinen Zugriff mehr auf die Datenbanken :
Table 'my.table' doesn't exist in engine
Was verursacht dieses und was ist die Lösung ? Ich sehe die Struktur meiner Datenbank, aber wenn ich versuche, darauf zuzugreifen, es gibt mir diese Fehlermeldung.
Ich habe versucht mysql-upgrade --force
und löschen rm ib_logfile1 ib_logfile0
Den Verlust der Daten ist nicht ein problem hier, das problem ist, dass ich nicht verbringen Sie 30 Minuten auf den re-Installation jeder Datenbank jedes mal, wenn ich einen Neustart.
Hier einige logs :
140730 9:24:13 [Note] Server socket created on IP: '127.0.0.1'.
140730 9:24:14 [Note] Event Scheduler: Loaded 0 events
140730 9:24:14 [Warning] InnoDB: Cannot open table mysql/gtid_slave_pos from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
140730 9:24:14 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1932: Table 'mysql.gtid_slave_pos' doesn't exist in engine
140730 9:24:14 [Note] /usr/local/Cellar/mariadb/10.0.12/bin/mysqld: ready for connections.
Version: '10.0.12-MariaDB' socket: '/tmp/mysql.sock' port: 3306 Homebrew
140730 16:26:28 [Warning] InnoDB: Cannot open table db/site from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas gelöscht hat Ihre ibdata1-Datei, wo InnoDB-hält das Wörterbuch. Definitiv es ist nicht MySQL, der es tut.
mysqldump --all-databases > sql_file.sql
deinstallieren und installieren von mysql, dann rufen Siemysql sql_file.sql
*.ibd
- Datei für eine Tabelle, die soll zu existieren,mysqldump
kommt zu einem Fehler und erzeugen keine Daten, also nicht Vertrauen, dass der Ansatz zu viel.Ok Leute, ich lief in dieses problem, dieses Wochenende, wenn mein OpenStack-Umgebung abgestürzt. Ein weiterer Beitrag über die demnächst auf, wie sich zu erholen.
Ich habe eine Lösung gefunden, die für mich gearbeitet mit einer SQL Server-Instanz, die unter der Ver 15.1 Distrib 10.1.21-MariaDB mit Fedora-25-Server als host. Hör nicht auf all die anderen posts, die sagen, dass Ihre Datenbank ist beschädigt, wenn Sie vollständig kopiert Ihre alten mariadb-Servers /var/lib/mysql-Verzeichnis und die Datenbank, die Sie kopieren nicht bereits beschädigt. Dieser Prozess beruht auf einem system, auf dem das OS beschädigt wurde, aber die Dateien noch zugänglich.
Hier sind die Schritte, die ich gefolgt.
Stellen Sie sicher, dass Sie vollständig deinstalliert, alle aktuellen Versionen von SQL nur auf dem NEUEN server. Auch, stellen Sie sicher, dass ALLE mysql-server oder mariadb-server-Prozesse auf die NEUEN UND ALTEN Server wurden gestoppt durch:
Auf dem NEUEN SQL-server gehen in die /var/lib/mysql Verzeichnis und sicherzustellen, dass es gibt keine Dateien in diesem Verzeichnis. Wenn Dateien in diesem Verzeichnis wird dann der Vorgang zum entfernen der Datenbank-server von der neuen Maschine hat nicht funktioniert und ist möglicherweise beschädigt. Stellen Sie sicher, dass es vollständig deinstalliert, die neue Maschine.
Auf dem ALTEN SQL-server:
Stellen Sie sicher, dass der sshd läuft auf dem ALTEN und NEUEN Server. Stellen Sie sicher, dass die Netzwerkverbindung zwischen den beiden Servern.
Auf dem NEUEN SQL-server:
Auf dem ALTEN SQL-server:
Auf dem NEUEN SQL-server:
Sollten Sie jetzt eine "mysql" - Verzeichnis die Datei sitzt in der NEWMYSQL-DIR. Widerstehen Sie dem Drang zu laufen, einen "cp" - Befehl, allein mit keine Schalter. Es wird nicht funktionieren. Führen Sie den folgenden "cp" - Befehl und sicherzustellen, dass Sie die gleichen Schalter habe ich.
Jetzt sollten Sie eine Kopie von allen Ihren alten SQL server-Dateien auf dem NEUEN server mit Berechtigungen im Takt. Auf dem NEUEN SQL-server:
SEHR WICHTIGER SCHRITT. ÜBERSPRINGEN SIE NICHT
FÜR MARIADB-SERVER und DNF:
MYSQL-SERVER und YUM:
Können Sie versuchen, zu:
ändern mein.ini hinzufügen
dann öffnen Sie phpmyadmin (oder einem anderen DB-viewer wie Navicat oder MYSQL-Workbench) ausführen und
für jede Tabelle
Sobald Sie öffnen Sie Ihre Tabellen stellen eine vollständige mysql-dump
Ich weiß, eine Menge Arbeit zu tun, dass Sie es nicht brauchen.
Habe ich nur hatte dieses problem mit MariaDB/InnoDB und war in der Lage, es zu beheben, indem
In meinem Fall, ist der Fehler verschwunden, nachdem ich mein OS neu gestartet und neu gestartet MariaDB-server. Seltsam.
Diesem wirklich gesaugt.
Ich habe versucht, alle Lösungen, die hier vorgeschlagen werden, aber das einzige was funktionierte war die
ALTER TABLE old_db.{table_name} RENAME new_db.{table_name}
auf alle Tabellen funktionierenDROP old_db
old_db
wiederALTER TABLE new_db.{table_name} RENAME old_db.{table_name}
auf alle Tabellen innew_db
Sobald Sie das getan haben, können Sie schließlich nur das erstellen der Tabelle wieder, die Sie zuvor hatte.