GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehlerursache:Ungültiger (alter?) Tabellen- oder Datenbankname 'lost+found'

Für mich sieht es aus wie dein datadir befindet sich in einem eigenen Dateisystem.

Ext-Dateisysteme haben, wie die meisten FS unter Unix, in ihrer Wurzel ein Verzeichnis namens lost+found . Es existiert, damit Dateien, die getrennt werden (d. h. sie haben Inhalt, aber keinen zugehörigen Verzeichniseintrag), irgendwo neu angehängt werden können, wenn ein inkonsistentes Dateisystem fsckiert wird (siehe z. B. https://unix.stackexchange.com/ questions/18154/what-is-the-purpose-of-the-lostfound-folder-in-linux-and-unix für weitere Details). Dieser Zweck ist bei der Notfallwiederherstellung wichtig, daher sollten Sie das Verzeichnis nicht löschen.

Ihr Problem tritt auf, wenn der Einhängepunkt, auf dem das Dateisystem, das dieses Verzeichnis enthält, eingehängt ist, vollständig an eine Anwendung übergeben wird, die erwartet, dass alles in diesem Einhängepunkt zu ihr gehört. MySQL ist eines davon und versucht, lost+found zu interpretieren Verzeichnis als etwas db-Bezogenes und schlägt (nicht unangemessen) fehl.

Am besten ist es, nie einen ganzen FS einer Anwendung zu widmen, sondern stattdessen den FS an einem nicht anwendungsspezifischen Einhängepunkt zu mounten, z. B. /data1 , erstellen Sie darunter ein Unterverzeichnis, zB /data1/mysql , und konfigurieren Sie die Anwendung neu, um dieses Verzeichnis als ihr Datenverzeichnis zu verwenden.


MadHatter hat den Fehler gut erklärt. Aber seitdem haben sich die Zeiten geändert und MySQL (seit 5.6.3) hat jetzt eine Option, dieses Verzeichnis zu ignorieren. Fügen Sie einfach diese Aussage zu Ihrem /etc/mysql/my.cnf hinzu Datei:

ignore-db-dir=lost+found

Nach dem Neustart von MySQL können Sie dies mit dem Befehl überprüfen:

show global variables like 'ignore_db_dirs';

Wenn Sie mehrere Verzeichnisse ignorieren möchten, müssen Sie die Option für jedes einzeln angeben.

Quelle:http://www.chriscalender.com/ignoring-the-lostfound-directory-in-your-datadir/


Der Speicherort von my.cnf unter CentOS 7.2, wenn Sie MariaDB verwenden, befindet sich in

/etc/my.cnf

Sie können den Dienst mit

neu starten
systemctl restart mariadb.service

ignore-db-dir sollte in den Abschnitt [mysqld] und nicht in den Abschnitt [mysqld_safe] gelegt werden.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

ignore-db-dir=lost+found

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Linux
  1. Linux – Ist der Schrägstrich (/) Teil des Namens des Linux-Root-Verzeichnisses?

  2. Eine Verzeichniskonfiguration in IIS ist ungültig

  3. Entfernen Sie einen symbolischen Link zu einem Verzeichnis

  4. Schwerwiegender Fehler:cuda.h:Keine solche Datei oder Verzeichnis

  5. Laravel + SQLite =SQLSTATE[HY000]Allgemeiner Fehler:8 Versuch, eine schreibgeschützte Datenbank zu schreiben

So kopieren Sie MySQL-Tabellen zwischen Datenbanken

So benennen Sie den MySQL-Datenbanknamen in Linux um

So ändern Sie den Website-Namen in WordPress

Das erneute Lesen der Partitionstabelle ist mit Fehler 22 fehlgeschlagen:ungültiges Argument

Fehlerursache:Ungültiger (alter?) Tabellen- oder Datenbankname 'lost+found'

Was passiert, wenn ich lost+found lösche?