the seleccionada restaurar please importar error discard desde datos consola before archivo mysql mysqldump

seleccionada - restaurar base de datos mysql desde archivo sql



Problemas de mysqldump con el error de restauraciĆ³n: ''DESECHE el espacio de tablas antes de IMPORTAR'' (4)

Encontré que la forma más fácil de evitar este problema era editar manualmente el volcado de la base de datos de phpmyadmin y editar / cambiar la tabla que tenía problemas a algo más que INNODB . Cambié la tabla de problemas a ENGINE=MyISAM y voila. La importación funcionó.

CREATE TABLE IF NOT EXISTS `home3_acymailing_tag` ( `tagid` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(250) NOT NULL, `userid` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`tagid`), KEY `useridindex` (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Ejecuto una copia de seguridad diaria de mysqldump de la base de datos de producción (mysql versión 5.1.66):

mysqldump --user=username --password=secret -C -e --create-options --hex-blob --net_buffer_length=5000 databasename > file

También hago una restauración diaria de esa base de datos en mi máquina de desarrollo (mysql versión 5.6.12)

mysql --user=username --password=secret databasename < file

Me sale el error: ERROR 1813 (HY000) en la línea 25: espacio de tabla para la tabla '' databasename . tablename ''existe. Por favor descarte el espacio de tabla antes de IMPORTAR.

Mi lectura indica que esto se debe a que la base de datos innodb mysql requiere el comando:

ALTER TABLE tbl_name DISCARD TABLESPACE;

para ejecutarse antes de que se descarte la tabla: parece que al eliminar la tabla no es suficiente para deshacerse de sus índices. (mi servidor de desarrollo usa la opción innodb_file_per_table)

No quiero usar la opción ''reemplazar'' porque potencialmente podría tener datos en mi base de datos de desarrollo que se eliminaron en la base de datos de producción.

Por cierto, después del error, las tablas no son legibles, pero al reiniciar mysqld se corrige.

Entonces, la pregunta es: ¿existe alguna opción de volcado de mysql que ayude a solucionar este problema, o existe otra forma de importar los datos que evitarán el error?

Gracias de antemano por la lectura.


Parece que tienes un nombre de tabla.ibd pero no un nombre de tabla.frm.

Verificar:

  1. cd a su directorio de datos mysql luego el nombre de la base de datos.

    cd /var/lib/mysql/database_name

  2. Busque el nombre de la tabla que está dando el error.

    ls tablename.*

    Deberías ver dos archivos:

    tablename.ibd tablename.frm

    Pero supongo que no y solo ves

    tablename.ibd

Para arreglarlo tienes algunas opciones:

  1. Agregue el seguimiento a mysqldump, que hará que la base de datos se elimine, limpiando el directorio de datos, antes de restaurar.

    --add-drop-database

  2. Copie tablename.frm de prod a dev y luego emita una declaración de eliminación de tabla.

También:

  • No es necesario utilizar net_buffer_length = 5000 cuando esté volcado a un archivo en localhost.
  • Otras soluciones de copia de seguridad - Percona Xtrabackup

También encontré ese problema al eliminar un esquema y volver a crearlo. Superé este problema yendo a C:/ProgramData/MySQL/MySQL Server 5.6/data/my_database_name y borrando las tablas que quedaron de la creación de la base de datos anterior. También puede eliminar toda la base de datos, si lo desea.


si está utilizando XAMPP, primero ("detener") MySQL Luego vaya a C: / xampp / mysql / data / dnb, donde en mi caso dnb es la carpeta de mi base de datos. Entonces, ábralo y elimine el archivo .ibd, por lo tanto, solo puede borrarlo cuando ya haya detenido MYsql. Luego vaya a phpmyadmin 1 haga clic en phpmyadmin. 2 haga clic en las bases de datos que aparecen a continuación (server.127.0.0.1 en su caso, mi cambio) 3, luego verifique la base de datos que desea eliminar y haga clic en el botón para soltar. 4 entonces puede crear una base de datos con el mismo nombre e importar su base de datos con éxito. Aquí puedes ver cómo sueltas la base de datos desde phpmyadmin