una restricción modificar llave foranea falla externa desactivar compuesta como clave cambiar borrar mysql foreign-keys foreign-key-relationship mysql-error-1025

mysql - restricción - incapaz de soltar la clave externa



llave foranea sql (5)

Me gustaría colocar la clave externa en mi tabla pero he estado en este mensaje de error

mysql> alter table customers drop foreign key customerid; ERROR 1025 (HY000): Error on rename of ''./products/customers'' to ''./products/#sql2-7ec-a3'' (errno: 152) mysql>


Debe intentar con el nombre de la clave externa como sugirió Fahim Parkar. En realidad eso tampoco funciona siempre.

En mi caso utilicé el

FOREIGN KEY `fk`(`col1`) REFERENCES `table2`(`col1`)

Código para agregar el fk por creación.

El problema con este código es que no es válido y debería generar algún tipo de error de sintaxis, pero aún así agregó una clave externa con un nombre aleatorio.

Cuando agregué el fk con la sintaxis correcta:

CONSTRAINT `fk` FOREIGN KEY (`col1`) REFERENCES `table2`(`col1`)

El siguiente código lo dejó caer correctamente:

ALTER TABLE `table1` DROP FOREIGN KEY `fk`

Por lo tanto, este tipo de error también puede ocurrir si intenta eliminar una clave externa con un nombre no válido. Es importante ver las propiedades de la tabla con

SHOW CREATE TABLE `table1`

y compruebe los nombres de clave externa si recibe este tipo de errores.


La solución descrita aquí por Chris White funcionó para mí.

El problema raíz es que MySQL crea tanto un índice como una clave externa. Ambos deben ser eliminados (la clave externa primero, contrariamente a lo que dijo Chris).

  1. show create table table_name;

    SHOW CREATE TABLE `table_name`: | table_name | CREATE TABLE `table_name` ( `id` int(20) unsigned NOT NULL auto_increment, `key_column` smallint(5) unsigned default ''1'', KEY `column_tablein_26440ee6` (`key_column`), <--- shows key name CONSTRAINT `table_name_ibfk_1` FOREIGN KEY (`key_column`) REFERENCES <--- shows foreign key constraint name `second_table` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

  2. Eliminar la restricción de clave externa:

    ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;

  3. Eliminar la clave

    ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;

Eso lo hizo por mí.


Para evitar este error al intentar eliminar una clave externa, use el nombre de la restricción en lugar del nombre de la columna de la clave externa


Para evitar este error al intentar eliminar una clave externa, use el nombre de la restricción en lugar del nombre de la columna de la clave externa.

Cuando lo intente

mysql> ALTER TABLE mytable DROP PRIMARY KEY;

Tengo error como

ERROR 1025 (HY000): Error on rename of ''./database/#sql-454_3'' to ''./database/mytable'' (errno: 150).

Lo resolví usando:

mysql> ALTER TABLE mytable DROP PRIMARY KEY, ADD PRIMARY KEY (column1,column2,column3);

Algunos enlaces que te ayudarán.

enlace 1

enlace 2 [busque Publicado por Alex Blume el 7 de noviembre de 2008 5:09 pm y publicado por Hector Delgadillo el 21 de enero de 2011 4:57 am]


Parece un error en el mensaje de error de MySQL. ( http://bugs.mysql.com/bug.php?id=10333 )

Utilice SHOW CREATE TABLE table_name para ver el nombre real de la clave externa. Parece que podría ser un problema del navegador de consultas mysql al generar la consulta con una ortografía incorrecta del nombre de la clave externa.