MySQL: ERROR 1553 (HY000): Cannot drop index ‘uniq_profit’: needed in a foreign key constraint MySQL で一意制約が削除できない 1 2 3 UNIQUE KEY `uniq_profit` (`sales_id`,`accounting_status`), CONSTRAINT `costs_profit_sales_id_d56dec15_fk_sales_sales_id` FOREIGN KEY (`sales_id`) REFERENCES `sales_sales` (`id`), CONSTRAINT `costs_profit_chk_1` CHECK ((`fiscal_year` >= 0)) 1 2 ALTER TABLE `costs_profit` DROP FOREIGN KEY `costs_profit_sales_id_d56dec15_fk_sales_sales_id`, DROP INDEX `uniq_profit`; ALTER TABLE `costs_profit` ADD CONSTRAINT `costs_profit_sales_id_d56dec15_fk_sales_sales_id` FOREIGN KEY (`sales_id`) REFERENCES `sales_sales` (`id`); 実行:
1 2 3 4 5 6 7 mysql> ALTER TABLE `costs_profit` DROP FOREIGN KEY `costs_profit_sales_id_d56dec15_fk_sales_sales_id`, DROP INDEX `uniq_profit`; Query OK, 0 rows affected (0.20 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE `costs_profit` ADD CONSTRAINT `costs_profit_sales_id_d56dec15_fk_sales_sales_id` FOREIGN KEY (`sales_id`) REFERENCES `sales_sales` (`id`); Query OK, 16 rows affected (0.17 sec) Records: 16 Duplicates: 0 Warnings: 0 Django Migration の失敗 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('partners', '0003_auto_20230426_0908'), ] operations = [ migrations.RemoveConstraint( model_name='partneruserrole', name='uniq_partneruserrole', ), migrations.AddConstraint( model_name='partneruserrole', constraint=models.UniqueConstraint(fields=('partner', 'partneruser', 'permission'), name='uniq_partneruserrole'), ), ] 制約 検索 1 2 3 4 5 6 7 8 9 SELECT DISTINCT A.CONSTRAINT_NAME, A.TABLE_NAME, A.COLUMN_NAME, B.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE as A JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE as B ON A.TABLE_NAME = B.TABLE_NAME WHERE A.TABLE_NAME = 'partners_partneruserrole' AND B.CONSTRAINT_NAME like 'uniq_%' AND A.CONSTRAINT_NAME not like 'uniq_%' AND A.CONSTRAINT_NAME != 'PRIMARY'; +-----------------------------------------------------------+--------------------------+----------------+----------------------+ | CONSTRAINT_NAME | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | +-----------------------------------------------------------+--------------------------+----------------+----------------------+ | partners_partneruser_partneruser_id_d59f67cc_fk_partners_ | partners_partneruserrole | partneruser_id | uniq_partneruserrole | | partners_partneruser_partner_id_852ab185_fk_partners_ | partners_partneruserrole | partner_id | uniq_partneruserrole | | partners_partneruser_permission_id_031e3996_fk_auth_perm | partners_partneruserrole | permission_id | uniq_partneruserrole | +-----------------------------------------------------------+--------------------------+----------------+----------------------+ 再設定 1 2 3 4 5 6 7 ALTER TABLE `partners_partneruserrole` DROP FOREIGN KEY `partners_partneruser_partneruser_id_d59f67cc_fk_partners_`; ALTER TABLE `partners_partneruserrole` DROP FOREIGN KEY `partners_partneruser_partner_id_852ab185_fk_partners_`; ALTER TABLE `partners_partneruserrole` DROP FOREIGN KEY `partners_partneruser_partner_id_852ab185_fk_partners_`, DROP INDEX `uniq_profit`; ALTER TABLE `partners_partneruserrole` ADD CONSTRAINT `partners_partneruser_partneruser_id_d59f67cc_fk_partners_` FOREIGN KEY (`partneruser_id`) REFERENCES `partners_partneruser` (`id`); ALTER TABLE `partners_partneruserrole` ADD CONSTRAINT `partners_partneruser_partner_id_852ab185_fk_partners_` FOREIGN KEY (`partner_id`) REFERENCES `partners_partner` (`id`); ALTER TABLE `partners_partneruserrole` ADD CONSTRAINT `partners_partneruser_permission_id_031e3996_fk_auth_perm` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`user_ptr_id`); 最終スキーマ 1 2 3 4 5 6 7 8 9 10 11 12 DROP TABLE IF EXISTS `partners_partneruserrole`; CREATE TABLE `partners_partneruserrole` ( `id` bigint NOT NULL AUTO_INCREMENT, .... PRIMARY KEY (`id`), UNIQUE KEY `uniq_partneruserrole` (`partner_id`,`partneruser_id`,`permission_id`), KEY `partners_partneruser_partneruser_id_d59f67cc_fk_partners_` (`partneruser_id`), KEY `partners_partneruser_permission_id_031e3996_fk_auth_perm` (`permission_id`), CONSTRAINT `partners_partneruser_partner_id_852ab185_fk_partners_` FOREIGN KEY (`partner_id`) REFERENCES `partners_partner` (`id`), CONSTRAINT `partners_partneruser_partneruser_id_d59f67cc_fk_partners_` FOREIGN KEY (`partneruser_id`) REFERENCES `partners_partneruser` (`user_ptr_id`), CONSTRAINT `partners_partneruser_permission_id_031e3996_fk_auth_perm` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;