Entonces estoy tratando de agregar una clave principal a una de las tablas en mi base de datos. En este momento tiene una clave primaria como esta:
PRIMARY KEY (user_id, round_number)
Donde user_id es una clave externa.
Estoy tratando de cambiarlo a esto:
PRIMARY KEY (user_id, round_number, created_at)
Estoy haciendo esto en phpmyadmin haciendo clic en el icono de la clave principal en la vista de estructura de la tabla.
Este es el error que obtengo:
#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)
Es una base de datos MySQL con motor de tabla InnoDB.
mysql
sql
phpmyadmin
innodb
mysql-error-1025
Richard Knop
fuente
fuente
Respuestas:
Probablemente haya otra tabla con una clave externa que hace referencia a la clave principal que está intentando cambiar.
Para averiguar qué tabla causó el error, puede ejecutar
SHOW ENGINE INNODB STATUS
y luego mirar laLATEST FOREIGN KEY ERROR
sección.fuente
Como se dijo antes, debes eliminar los FK. En Mysql hazlo así:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`; ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
fuente
Para aquellos que están llegando a esta pregunta a través de Google ... este error también puede ocurrir si intenta cambiar el nombre de un campo que actúa como una clave externa.
fuente
Para omitir esto en PHPMyAdmin o con MySQL, primero elimine la restricción de clave externa antes de cambiar el nombre del atributo.
(Para usuarios de PHPMyAdmin: Para eliminar las restricciones de FK en PHPMyAdmin, seleccione el atributo y luego haga clic en "vista de relación" junto a "vista de impresión" en la barra de herramientas debajo de la estructura de la tabla)
fuente
Si está intentando eliminar una columna que es una CLAVE EXTRANJERA, debe encontrar el nombre correcto que no es el nombre de la columna. Por ejemplo: si estoy tratando de eliminar el campo del servidor en la tabla de alarmas, que es una clave externa a la tabla de servidores.
SHOW CREATE TABLE alarm;
Busque laCONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)
línea.ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
ALTER TABLE `alarm` DROP `server_id`
Esto eliminará el servidor de claves foráneas de la tabla de alarmas.
fuente
Tuve este problema, es para clave externa
Haga clic en
Relation View
(como en la imagen de abajo) y luego busque el nombre del campo que va a eliminar, y debajo de laForeign key constraint (INNODB)
columna, simplemente ponga la selección en nada. Significa que no hay clave externa¡Espero que funcione!
fuente
Si está agregando una clave externa y enfrenta este error, podría ser que el valor de la tabla secundaria no esté presente en la tabla principal.
Digamos que la columna a la que se debe agregar la clave externa tiene todos los valores establecidos en 0 y el valor no está disponible en la tabla a la que se hace referencia.
Puede establecer algún valor que esté presente en la tabla principal y luego agregar una clave externa funcionó para mí.
fuente