sql >> Base de Datos >  >> RDS >> Mysql

ERROR 1005 (HY000):No se puede crear la tabla x (errno:-1)

Esta es una vieja pregunta, pero la recibí hoy y encontré una solución (y sí con errno =-1).

Nuestra tabla es InnoDB y fue creada y destruida cada pocas horas. Recientemente habíamos iniciado un servidor esclavo para seguir a ese maestro. También usamos la opción "innodb_file_per_table".

El error ocurriría solo en el esclavo, no en el maestro. El problema fue que recientemente sincronizamos ese esclavo con el maestro usando rsync unas horas antes.

Rsync copió el archivo de la tabla, pero mientras tanto el maestro lo eliminó, ya que era una tabla temporal. Por lo tanto, el archivo .idb existía en el esclavo, pero ya no en el maestro.

Cuando el maestro envió una solicitud para crear la tabla, el esclavo no pudo porque el archivo ya estaba allí. MySQL no sabía que existía una tabla, ya que los metadatos decían que no había ninguna tabla allí. Supongo que MySQL estaba tratando de crear el archivo, pero como estaba allí, falló.

En mi caso, la solución fue eliminar el archivo .idb en otra carpeta (por supuesto con una copia de seguridad antes).

Después de eso, la base de datos nos permitiría crear la tabla, y el esclavo seguiría al maestro nuevamente

Una mejor manera de haberlo hecho con rsync hubiera sido usar una opción --delete para eliminar cualquier archivo obsoleto que hubiera desaparecido del maestro.

De todos modos, es posible que no tenga la situación exacta que he descrito, pero podría ser simplemente un archivo obsoleto que se quedó allí por una razón u otra.