migradas - motor de base de datos mysql
Mysql ''Got error-1 del motor de almacenamiento'' error (5)
Tengo una ''prueba'' de tabla de myism que contiene algunos datos desactualizados, ahora quiero recrear la tabla, todas las columnas son iguales, excepto que cambié el almacenamiento de myism a innodb. El sql volcado que utilicé para recrear la tabla es como:
drop table test;
create table test ( ... )
engine=innodb
insert into test(...) values(...)
ahí es donde obtuve el error "Got Error -1 del motor de almacenamiento", he buscado en Google, la mayoría de los resultados se centran en las tablas de innodb corruptas. Mientras que para mi caso no creo que esté roto, es solo algo que me perdí en el lanzamiento y crear declaraciones.
Otra cosa es que después de ejecutar el sql anterior, todo lo que queda para la prueba de la tabla es un archivo llamado file.frm, supongo que innodb table necesita otras cosas para ejecutarse, pero no estoy seguro de qué.
¿Como puedo solucionar este problema? Y probablemente necesito hacer más tareas de este tipo, ¿cuál es el procedimiento correcto para dejar caer la tabla myism y recrearlas como innodb?
Gracias.
DE ACUERDO. Encontré la solución. El problema fue causado por el parámetro innodb_force_recovery en my.cnf, que se estableció en 4.
Para resolver el problema, configúrelo en 0 o elimine por completo este parámetro de my.cnf
Si verifica el registro de errores, durante la consulta, mysql escribirá en un lenguaje legible por humanos que: No le permitirá cambiar nada en la tabla hasta que se active el modo de recuperación de innodb, exactamente el siguiente mensaje:
InnoDB: A new raw disk partition was initialized or InnoDB: innodb_force_recovery is on: we do not allow InnoDB: database modifications by the user. Shut down InnoDB: mysqld and edit my.cnf so that newraw is replaced InnoDB: with raw, and innodb_force_... is removed.
Consulte: http://bugs.mysql.com/bug.php?id=30225
Para descubrir cuál es el código de error para cualquier código de error del sistema en un sistema Unix o Linux, busque en errno.h. En mi mac, puedo hacer:
$ grep 28 /usr/include/sys/errno.h
#define ENOSPC 28 / * No queda espacio en el dispositivo * /
En otros sistemas operativos, como linux, habrá algunas otras capas debido a que el sub de capa de máquina incluye. Sin embargo, debería poder examinar esos archivos y encontrar estas definiciones de error.
Alternativamente, use el comando ''man'' para buscar "introducción" u otras páginas de manual en la sección ''2'', la sección del sistema operativo.
Tuve esto con una importación de SQL en Azure y necesitaba cambiar
MOTOR = MyISAM con MOTOR = InnoDB
Una causa común para el error -1 es un disco lleno. Tengo diferentes máquinas virtuales pequeñas para propósitos de prueba, e innodb
simplemente las llena (y me olvido de ello).
$df -ah
Si te muestra el disco al 100%, ese es el origen del -1
allí mismo;)
Vaya a /etc/my.cnf
Línea de comentario innodb_force_recovery = 1
Guarda el archivo y reinicia mysql