GNU/Linux >> Belajar Linux >  >> Linux

Penyebab kesalahan:Nama tabel atau database 'hilang+ditemukan' tidak valid (lama?)

Sepertinya saya seperti datadir Anda berada dalam sistem file sendiri.

Sistem file ext, seperti kebanyakan FS di bawah Unix, memiliki akar direktori bernama lost+found . Itu ada untuk memungkinkan file yang terlepas (yaitu, mereka memiliki konten, tetapi tidak ada entri direktori terkait) untuk disambungkan kembali di suatu tempat ketika sistem file yang tidak konsisten di-fscked (lihat, misalnya, https://unix.stackexchange.com/ pertanyaan/18154/what-is-the-purpose-of-the-lostfound-folder-in-linux-and-unix untuk detail lebih lanjut). Tujuan ini penting dalam pemulihan bencana, jadi sebaiknya Anda tidak menghapus direktori.

Masalah Anda muncul ketika titik pemasangan, di mana sistem file yang berisi direktori itu dipasang, diberikan sepenuhnya ke aplikasi yang mengharapkan semua yang ada di titik pemasangan itu menjadi miliknya. MySQL menjadi salah satunya, ia mencoba menginterpretasikan lost+found direktori sebagai sesuatu yang berhubungan dengan db, dan (tidak masuk akal) gagal.

Taruhan terbaik Anda adalah jangan pernah mendedikasikan seluruh FS untuk sebuah aplikasi, melainkan memasang FS pada beberapa titik pemasangan non-spesifik aplikasi, misalnya /data1 , buat subdirektori di bawahnya, misalnya /data1/mysql , dan konfigurasikan ulang aplikasi untuk menggunakan direktori tersebut sebagai datadirnya.


MadHatter menjelaskan kesalahannya dengan baik. Namun sejak itu waktu telah berubah dan sekarang MySQL (sejak 5.6.3) memiliki opsi untuk mengabaikan direktori ini. Cukup tambahkan pernyataan ini ke dalam /etc/mysql/my.cnf Anda berkas:

ignore-db-dir=lost+found

Setelah MySQL restart Anda dapat memeriksanya dengan perintah:

show global variables like 'ignore_db_dirs';

Jika Anda ingin mengabaikan banyak direktori, Anda perlu menentukan opsi untuk masing-masing direktori secara terpisah.

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


Lokasi my.cnf di bawah CentOS 7.2 jika Anda menggunakan MariaDB ada di

/etc/my.cnf

Anda dapat memulai ulang layanan dengan

systemctl restart mariadb.service

abaikan-db-dir harus diletakkan di bawah bagian [mysqld] dan bukan di bawah [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. Kesalahan Instal Yum – Tidak cukup ruang di direktori unduhan [Terpecahkan]

  2. Kesalahan shell-init mengambil direktori saat ini [Perbaiki]

  3. Linux – Apakah Slash (/) Bagian Dari Nama Direktori Root Linux?

  1. cp:menghilangkan direktori – kesalahan saat menyalin direktori di Linux

  2. Hapus symlink ke direktori

  3. Lokasi default database PostgreSQL di Linux

  1. Kesalahan datetime mysql DEFAULT CURRENT_TIMESTAMP

  2. Laravel + SQLite =SQLSTATE[HY000]Kesalahan Umum:8 mencoba menulis database hanya-baca

  3. Gagal membaca ulang tabel partisi dengan kesalahan 22:argumen tidak valid