From 5867c21e8b592ee7b7bf67394da7b9e047abb453 Mon Sep 17 00:00:00 2001 From: dn1lk Date: Mon, 6 Oct 2025 01:06:48 +0300 Subject: [PATCH] fix mysql constraint dropping --- lib/SQL/Translator/Producer/MySQL.pm | 2 +- t/30sqlt-new-diff-mysql.t | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/SQL/Translator/Producer/MySQL.pm b/lib/SQL/Translator/Producer/MySQL.pm index 50926e50..f264d80e 100644 --- a/lib/SQL/Translator/Producer/MySQL.pm +++ b/lib/SQL/Translator/Producer/MySQL.pm @@ -723,7 +723,7 @@ sub alter_drop_constraint { if ($c->type eq PRIMARY_KEY) { push @out, $c->type; } else { - push @out, ($c->type eq FOREIGN_KEY ? $c->type : "CONSTRAINT"), $generator->quote($c->name); + push @out, ($c->type eq UNIQUE ? "INDEX" : $c->type), $generator->quote($c->name); } return join(' ', @out); } diff --git a/t/30sqlt-new-diff-mysql.t b/t/30sqlt-new-diff-mysql.t index 9151a84d..95457ba0 100644 --- a/t/30sqlt-new-diff-mysql.t +++ b/t/30sqlt-new-diff-mysql.t @@ -66,7 +66,7 @@ ALTER TABLE old_name RENAME TO new_name; ALTER TABLE employee DROP FOREIGN KEY FK5302D47D93FE702E; -ALTER TABLE person DROP CONSTRAINT UC_age_name; +ALTER TABLE person DROP INDEX UC_age_name; ALTER TABLE person DROP INDEX u_name; @@ -135,7 +135,7 @@ ALTER TABLE employee DROP COLUMN job_title; ALTER TABLE old_name RENAME TO new_name, ADD COLUMN new_field integer NULL; -ALTER TABLE person DROP CONSTRAINT UC_age_name, +ALTER TABLE person DROP INDEX UC_age_name, ADD COLUMN is_rock_star tinyint(4) NULL DEFAULT 1, CHANGE COLUMN person_id person_id integer(11) NOT NULL auto_increment, CHANGE COLUMN name name varchar(20) NOT NULL, @@ -201,11 +201,11 @@ CREATE TABLE added ( SET foreign_key_checks=1; ALTER TABLE employee DROP FOREIGN KEY FK5302D47D93FE702E, - DROP CONSTRAINT demo_constraint, + DROP CHECK demo_constraint, DROP COLUMN job_title, ADD CONSTRAINT FK5302D47D93FE702E_diff FOREIGN KEY (employee_id) REFERENCES person (person_id); -ALTER TABLE person DROP CONSTRAINT UC_age_name, +ALTER TABLE person DROP INDEX UC_age_name, DROP INDEX u_name, ADD COLUMN is_rock_star tinyint(4) NULL DEFAULT 1, ADD COLUMN value double(8, 2) NULL DEFAULT 0.00,