una - ¿Cómo eliminar restricciones de mi tabla MySQL?
restriccion de clave foranea phpmyadmin (10)
- Ir a la vista de estructura de la mesa.
- Verá 2 opciones en la parte superior a. Estructura de la tabla b. Vista de la relación .
- Ahora haga clic en la vista Relación , aquí puede eliminar su restricción de clave externa. Obtendrá toda la relación aquí.
Quiero eliminar las restricciones de mi tabla. Mi consulta es:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
Pero tengo un error:
#1064
- Tienes un error en tu sintaxis SQL; revise el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de ''restricciónFK_tbl_magazine_issue_mst_users
'' en la línea 1
Algunos ORM o marcos usan una convención de nomenclatura diferente para las claves externas que la FK_[parent table]_[referenced table]_[referencing field]
, porque se pueden modificar.
Laravel, por ejemplo, utiliza [parent table]_[referencing field]_foreign
como convención de denominación. Puede mostrar los nombres de las claves foráneas utilizando esta consulta, como se muestra here :
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = ''<database>'' AND REFERENCED_TABLE_NAME = ''<table>'';
Luego elimine la clave foránea ejecutando la consulta DROP FOREIGN KEY antes mencionada y su nombre correcto.
Esto funcionará en MySQL para eliminar restricciones.
alter table tablename drop primary key;
alter table tablename drop foreign key;
Mysql tiene una sintaxis especial para eliminar restricciones de clave externa:
ALTER TABLE tbl_magazine_issue
DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
No hay tal cosa como DROP CONSTRAINT
en MySQL. En su caso, usted podría utilizar DROP FOREIGN KEY
lugar.
Para agregar un poco a la respuesta de Robert Knight, ya que el título de la publicación en sí no menciona claves externas (y dado que no tiene ejemplos de código completos y los bloques de código de comentario de SO no se muestran tan bien como el código de las respuestas). bloques), agregaré esto para restricciones únicas . Cualquiera de estos trabajos para eliminar la restricción:
ALTER TABLE `table_name` DROP KEY `uc_name`;
o
ALTER TABLE `table_name` DROP INDEX `uc_name`;
Para aquellos que vienen aquí usando MariaDB:
Tenga en cuenta que MariaDB permite las declaraciones DROP CONSTRAINT en general, por ejemplo, para eliminar restricciones de verificación:
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
Si la restricción no es una clave externa, por ejemplo. una agregada usando ''UNIQUE CONSTRAINT (colA, colB)'' entonces es un índice que puede ser eliminado usando ALTER TABLE ... DROP INDEX ...
También está bien, puedes deshabilitar temporalmente todas las comprobaciones de claves foráneas desde una base de datos mysql: SET FOREIGN_KEY_CHECKS=0;
Y para habilitarlo de nuevo: SET FOREIGN_KEY_CHECKS=1;
Tuve el mismo problema y pude resolverlo con este código:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;