GNU/Linux >> Linux Esercitazione >  >> Linux

Causa dell'errore:nome tabella o database non valido (vecchio?) 'smarrito+trovato'

Mi sembra il tuo datadir si trova in un proprio file system.

I file system ext, come la maggior parte dei FS sotto Unix, hanno alla radice una directory chiamata lost+found . Esiste per consentire ai file che vengono staccati (ovvero, hanno contenuto, ma nessuna voce di directory associata) di essere ricollegati da qualche parte quando viene fscked un file system incoerente (vedi, ad esempio, https://unix.stackexchange.com/ domande/18154/qual è-lo-scopo-della-cartella-trovata-in-linux-e-unix per maggiori dettagli). Questo scopo è importante nel ripristino di emergenza, quindi non dovresti eliminare la directory.

Il tuo problema sorge quando il punto di montaggio, su cui è montato il file system che contiene quella directory, viene affidato interamente a un'applicazione che si aspetta che tutto in quel punto di montaggio appartenga ad esso. MySQL è uno di questi, tenta di interpretare il lost+found directory come qualcosa di correlato a db e (non irragionevolmente) fallisce.

La soluzione migliore non è mai quella di dedicare un intero FS a un'applicazione, ma invece di montare l'FS su un punto di montaggio non specifico dell'applicazione, ad esempio /data1 , crea una sottodirectory al di sotto, ad esempio /data1/mysql e riconfigurare l'applicazione per utilizzare quella directory come datadir.


Cappellaio Matto ha spiegato bene l'errore. Ma da allora i tempi sono cambiati e ora MySQL (dal 5.6.3) ha un'opzione per ignorare questa directory. Basta aggiungere questa dichiarazione nel tuo /etc/mysql/my.cnf file:

ignore-db-dir=lost+found

Dopo il riavvio di MySQL puoi controllarlo con il comando:

show global variables like 'ignore_db_dirs';

Se vuoi ignorare più directory, devi specificare l'opzione per ciascuna di esse separatamente.

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


La posizione di my.cnf in CentOS 7.2 se si utilizza MariaDB è in

/etc/my.cnf

Puoi riavviare il servizio con

systemctl restart mariadb.service

ignore-db-dir dovrebbe essere inserito nella sezione [mysqld] e non in quella [mysqld_safe].

[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. Yum Install Error – Spazio insufficiente nella directory di download [Risolto]

  2. Rimuove un collegamento simbolico a una directory

  3. Posizione predefinita del database PostgreSQL su Linux

  4. Errore irreversibile:cuda.h:file o directory non presenti

  5. Laravel + SQLite =SQLSTATE[HY000]Errore generale:8 tentativo di scrivere un database di sola lettura

Come copiare tabelle MySQL tra database

Come rinominare il nome del database MySQL in Linux

Errore di shell-init durante il recupero della directory corrente [fissare]

Come modificare il nome del sito Web in WordPress

Mysql datetime DEFAULT CURRENT_TIMESTAMP errore

Causa dell'errore:nome tabella o database non valido (vecchio?) 'smarrito+trovato'