GNU/Linux >> Tutoriales Linux >  >> Linux

Causa del error:nombre de tabla o base de datos no válido (¿antiguo?) 'perdido+encontrado'

Me parece a tu datadir está en un sistema de archivos propio.

Los sistemas de archivos ext, como la mayoría de los FS en Unix, tienen en su raíz un directorio llamado lost+found . Existe para permitir que los archivos que se separan (es decir, tienen contenido, pero no tienen una entrada de directorio asociada) se vuelvan a unir en algún lugar cuando se fsckee un sistema de archivos inconsistente (consulte, por ejemplo, https://unix.stackexchange.com/ question/18154/cuál-es-el-propósito-de-la-carpeta-perdida-en-linux-y-unix para obtener más detalles). Este propósito es importante en la recuperación ante desastres, por lo que no debe eliminar el directorio.

Su problema surge cuando el punto de montaje, en el que se monta el sistema de archivos que contiene ese directorio, se entrega por completo a una aplicación que espera que todo en ese punto de montaje le pertenezca. MySQL es uno de ellos, intenta interpretar el lost+found directorio como algo relacionado con db, y (no sin razón) falla.

Su mejor apuesta es nunca dedicar un FS completo a una aplicación, sino montar el FS en algún punto de montaje no específico de la aplicación, por ejemplo, /data1 , cree un subdirectorio debajo de eso, por ejemplo, /data1/mysql y vuelva a configurar la aplicación para usar ese directorio como su directorio de datos.


MadHatter explicó bien el error. Pero desde entonces los tiempos han cambiado y ahora MySQL (desde 5.6.3) tiene una opción para ignorar este directorio. Simplemente agregue esta declaración en su /etc/mysql/my.cnf archivo:

ignore-db-dir=lost+found

Después de reiniciar MySQL, puede verificarlo con el comando:

show global variables like 'ignore_db_dirs';

Si desea ignorar varios directorios, debe especificar la opción para cada uno de ellos por separado.

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


La ubicación de my.cnf en CentOS 7.2 si está utilizando MariaDB está en

/etc/my.cnf

Puede reiniciar el servicio con

systemctl restart mariadb.service

ignore-db-dir debe colocarse en la sección [mysqld] y no en la sección [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. Error de instalación de Yum:espacio insuficiente en el directorio de descarga [Resuelto]

  2. ¿Cómo ingresar a un directorio cuyo nombre es solo un signo negativo?

  3. Linux:¿la barra inclinada (/) forma parte del nombre del directorio raíz de Linux?

  4. cp:directorio omitido – error al copiar un directorio en Linux

  5. Eliminar un enlace simbólico a un directorio

Cómo cambiar el nombre de la base de datos MySQL en Linux

Error de Shell-init al recuperar el directorio actual [Fijar]

Cómo cambiar el nombre del sitio web en WordPress

Una configuración de directorio en IIS no es válida

Error fatal:cuda.h:No existe tal archivo o directorio

Laravel + SQLite =SQLSTATE[HY000]Error general:8 intentos de escribir una base de datos de solo lectura