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
Last activity: Feb 5, 2024, 02:25 PM