MT#59386 address foreign key handling in 6425.up/down

* Instead of using "set foreign_key_checks=0" before
  altering voicemail_spool voicemail_users tables the
  foreign key voicemail_spool.`v_s_mailboxuser_ref` is
  dropped instead and re-created after the alter table operations
  (same lines where "set foreign_key_checks=0" and "set
  foreign_key_checks=1" were respectively.
* That addresses the changed behavior with MariaDB 10.11.6
  where "alter table" statements the change columns involved
  in a foreign key and potentially causing data loss are prohibited
  even with "set foreign_key_checks=0".
* This change is only valid for new deployments and databases
  with already applied 6425.up are not affected.

Change-Id: I2f2a85ca9f9f7d15058f41f5d8eaaec23ec501fa
(cherry picked from commit 25257f1657)
mr10.5.7
Kirill Solomko 1 year ago
parent 2a40a7893b
commit 13f0eac1a1

@ -175,7 +175,7 @@ ALTER TABLE `address` MODIFY `tag` VARCHAR(64) CHARACTER SET latin1;
ALTER TABLE `version` DEFAULT CHARACTER SET latin1;
ALTER TABLE `version` MODIFY `table_name` varchar(32) CHARACTER SET latin1 NOT NULL;
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE `voicemail_spool` DROP FOREIGN KEY `v_s_mailboxuser_ref`;
ALTER TABLE `voicemail_users` DEFAULT CHARACTER SET latin1;
ALTER TABLE `voicemail_users` MODIFY `customer_id` char(36) CHARACTER SET latin1 NOT NULL DEFAULT '';
@ -211,7 +211,7 @@ ALTER TABLE `voicemail_spool` MODIFY `duration` varchar(16) CHARACTER SET latin1
ALTER TABLE `voicemail_spool` MODIFY `mailboxuser` varchar(255) CHARACTER SET latin1 DEFAULT '';
ALTER TABLE `voicemail_spool` MODIFY `mailboxcontext` varchar(63) CHARACTER SET latin1 DEFAULT '';
SET FOREIGN_KEY_CHECKS=1;
ALTER TABLE `voicemail_spool` ADD CONSTRAINT `v_s_mailboxuser_ref` FOREIGN KEY (`mailboxuser`) REFERENCES `voicemail_users` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `fax_preferences` DEFAULT CHARACTER SET latin1;
ALTER TABLE `fax_preferences` MODIFY `password` varchar(64) CHARACTER SET latin1 default NULL;

@ -175,7 +175,7 @@ ALTER TABLE `address` MODIFY `tag` VARCHAR(64) CHARACTER SET utf8;
ALTER TABLE `version` DEFAULT CHARACTER SET utf8;
ALTER TABLE `version` MODIFY `table_name` varchar(32) CHARACTER SET utf8 NOT NULL;
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE `voicemail_spool` DROP FOREIGN KEY `v_s_mailboxuser_ref`;
ALTER TABLE `voicemail_users` DEFAULT CHARACTER SET utf8;
ALTER TABLE `voicemail_users` MODIFY `customer_id` char(36) CHARACTER SET utf8 NOT NULL DEFAULT '';
@ -211,7 +211,7 @@ ALTER TABLE `voicemail_spool` MODIFY `duration` varchar(16) CHARACTER SET utf8 D
ALTER TABLE `voicemail_spool` MODIFY `mailboxuser` varchar(255) CHARACTER SET utf8 DEFAULT '';
ALTER TABLE `voicemail_spool` MODIFY `mailboxcontext` varchar(63) CHARACTER SET utf8 DEFAULT '';
SET FOREIGN_KEY_CHECKS=1;
ALTER TABLE `voicemail_spool` ADD CONSTRAINT `v_s_mailboxuser_ref` FOREIGN KEY (`mailboxuser`) REFERENCES `voicemail_users` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `fax_preferences` DEFAULT CHARACTER SET utf8;
ALTER TABLE `fax_preferences` MODIFY `password` varchar(64) CHARACTER SET utf8 default NULL;

Loading…
Cancel
Save