Pregunta

MySQL me está dando pena cuando intento de recrear una tabla en particular en una base de datos concreta; Creo que el problema es que en alguna parte de MySQL tiene algunos registros de claves externas de la tabla y sigue tratando de comprobar la restricción cuando trato de crear la tabla.

La base de datos en cuestión es para el entorno de prueba y se actualiza periódicamente por el vertido de la prod DB, dejando caer la prueba de DB, la creación de la prueba de nuevo el DB y luego aplicar el vertedero prod base de datos para la nueva prueba DB.

Sin embargo ayer por la noche cuando fui a hacer este procedimiento de repente me encontré con errno de MySQL: 121, que normalmente se relaciona con una clave externa incorrectos ... Si trato con una defnición tabla diferente, sin especificar una clave, lo entiendo errno: 150 en su lugar. Sin embargo, esto sólo ocurre si intento de aplicar el volcado a una nueva base de datos de exactamente el mismo nombre que el antiguo. Si se crea una base de datos con un nombre diferente de la anterior (en el mismo servidor todavía) y aplicar el volcado, no hay ningún problema.

De hecho, ni siquiera se puede crear una tabla de exactamente el mismo nombre sin ninguna tecla en absoluto, incluso en una nueva base de datos.

Este ejemplo demuestra el problema

mysql> create database test_db;
Query OK, 1 row affected (0.01 sec)

mysql> connect test_db;
Connection id:    1590
Current database: test_db

mysql> create table client_feed_group(id int);
ERROR 1005 (HY000): Can't create table './test_db/client_feed_group.frm' (errno: 150)
mysql> create database new_db_name;
Query OK, 1 row affected (0.00 sec)

mysql> connect new_db_name;
Connection id:    1591
Current database: new_db_name

mysql> create table client_feed_group(id int);
Query OK, 0 rows affected (0.01 sec)

Ya se han reducido la base de datos TEST_DB; Esto debería eliminar toda la tabla y todos los registros. entonces yo creo que, conectarse a él y tratar de crear el viejo client_feed_group mesa; Me aparece un error. Puedo crear otra base de datos con un nombre diferente y seguir los mismos pasos; este momento no hay ningún problema.

¿Fue útil?

Solución

Parece ser el mismo que este error MySQL .

El procedimiento que se encuentra muy abajo en los comentarios trabajado para mí, que es

  • crear la tabla de nuevo usando el mismo esquema que el anterior, pero utilizando un motor MyISAM
  • Uso de ALTER TABLE para cambiar el motor a innodb

a partir de entonces las cosas parecen funcionar correctamente; Ahora puedo dejar caer la base de datos y hacer una restauración completa sin problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top