Sample Header Ad - 728x90

Cannot drop column : needed in a foreign key constraint

14 votes
2 answers
95294 views
I have a table with two foreign key constraints as below: mysql> SHOW CREATE TABLE user; CREATE TABLE user ( id int(11) unsigned NOT NULL AUTO_INCREMENT, region_id int(11) unsigned DEFAULT NULL, town_id int(11) unsigned DEFAULT NULL, fullname varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, username varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, email varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, password varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, active tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (id), KEY FK_G38T6P7EKUXYWH1 (region_id), KEY FK_J8VWK0ZN7FD2QX4 (town_id), CONSTRAINT FK_G38T6P7EKUXYWH1 FOREIGN KEY (region_id) REFERENCES region (id) ON UPDATE NO ACTION, CONSTRAINT FK_J8VWK0ZN7FD2QX4 FOREIGN KEY (town_id) REFERENCES town (id) ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci I can't drop a foreign key column although I disable FOREIGN_KEY_CHECKS. mysql> ALTER TABLE user DROP COLUMN region_id; 1553 - Cannot drop index 'FK_G38T6P7EKUXYWH1': needed in a foreign key constraint mysql> SHOW VARIABLES LIKE 'FOREIGN_KEY%'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | foreign_key_checks | ON | +--------------------+-------+ 1 row in set mysql> SET FOREIGN_KEY_CHECKS = 0; Query OK, 0 rows affected mysql> SHOW VARIABLES LIKE 'FOREIGN_KEY%'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | foreign_key_checks | OFF | +--------------------+-------+ 1 row in set mysql> ALTER TABLE user DROP COLUMN region_id; 1828 - Cannot drop column 'region_id': needed in a foreign key constraint 'FK_G38T6P7EKUXYWH1'
Asked by Sithu (367 rep)
Mar 19, 2017, 02:32 PM
Last activity: Feb 5, 2024, 02:25 PM