GNU/Linux >> Znalost Linux >  >> Linux

Příčina chyby:Neplatný (starý?) název tabulky nebo databáze 'ztraceno+nalezeno'

Připadá mi to jako vaše datadir je ve vlastním systému souborů.

Ext souborové systémy, stejně jako většina FS pod Unixem, mají ve svém kořenovém adresáři adresář nazvaný lost+found . Existuje proto, aby umožnil souborům, které se odpojí (to znamená, že mají obsah, ale žádnou přidruženou položku adresáře), aby byly někde znovu připojeny, když je fscked nekonzistentní souborový systém (viz např. https://unix.stackexchange.com/ otázky/18154/jaký-je-účel-složky-ztracených-nálezů-v-linuxu-a-unixu, kde najdete další podrobnosti). Tento účel je důležitý při obnově po havárii, takže byste neměli mazat adresář.

Váš problém nastává, když je přípojný bod, ke kterému je připojen souborový systém obsahující tento adresář, zcela předán aplikaci, která očekává, že vše v tomto přípojném bodě patří jemu. MySQL jako jeden takový se pokouší interpretovat lost+found adresář jako něco souvisejícího s db a (ne bezdůvodně) selže.

Nejlepším řešením je nikdy nevyhradit aplikaci celý FS, ale místo toho připojit FS na nějaký aplikačně nespecifický přípojný bod, např. /data1 , vytvořte podadresář, např. /data1/mysql a překonfigurujte aplikaci tak, aby používala tento adresář jako svůj datový adresář.


MadHatter dobře vysvětlil chybu. Od té doby se ale časy změnily a nyní má MySQL (od 5.6.3) možnost tento adresář ignorovat. Stačí přidat toto prohlášení do /etc/mysql/my.cnf soubor:

ignore-db-dir=lost+found

Po restartu MySQL to můžete zkontrolovat příkazem:

show global variables like 'ignore_db_dirs';

Pokud chcete ignorovat více adresářů, musíte zadat volbu pro každý z nich zvlášť.

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


Umístění my.cnf pod CentOS 7.2, pokud používáte MariaDB, je v

/etc/my.cnf

Službu můžete restartovat pomocí

systemctl restart mariadb.service

ignore-db-dir by měl být umístěn do sekce [mysqld] a ne do sekce [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. Linux – Je lomítko (/) součástí názvu kořenového adresáře Linuxu?

  2. Odeberte symbolický odkaz na adresář

  3. Chyba Mysql datetime DEFAULT CURRENT_TIMESTAMP

  1. Opětovné čtení tabulky oddílů se nezdařilo s chybou 22:neplatný argument

  2. Příčina chyby:Neplatný (starý?) název tabulky nebo databáze 'ztraceno+nalezeno'

  3. Co se stane, když smažu ztracené+nálezy

  1. Jak kopírovat tabulky MySQL mezi databázemi

  2. Jak zadat adresář, jehož název je pouze mínus?

  3. Konfigurace adresáře ve službě IIS je neplatná