Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Tabelle existiert nicht Fehler, aber es existiert

Das ist mir gerade passiert und nach einer Weile fand ich die Antwort in einem Blogartikel und wollte sie auch hier veröffentlichen.

Wenn Sie das MySQL-Datenverzeichnis aus /var/lib/mysql kopieren nach /path/to/new/dir , aber kopieren Sie nur die Datenbankordner (also mysql , wpdb , ecommerce , etc) UND Sie haben Innodb-Tabellen, Ihre Innodb-Tabellen werden in 'show tables' angezeigt, aber Abfragen darauf (select und describe ) schlägt mit dem Fehler Mysql error: table db.tableName doesn't exist fehl . Sie sehen die .frm Datei im db-Verzeichnis und frage mich warum.

Für innodb-Tabellen ist es wichtig, den ib* zu kopieren Dateien, die in meinem Fall ibdata1 waren , ib_logfile0 und ib_logfile1 . Nachdem ich die Übertragung durchgeführt und diese kopiert hatte, funktionierte alles wie erwartet.

Wenn Ihre my.cnf-Datei "innodb_file_per_table" enthält, wird die .ibd-Datei im db-Verzeichnis vorhanden sein, aber Sie benötigen immer noch die ib*-Dateien.