From 2c9999c57dea5831f953d60f9af811fbd3072a76 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 3 Jan 2024 14:07:49 +0000 Subject: [PATCH] Bug 35687 - Upgrade to 23.06.00.013 may fail There are reports that this update triggers the error Cannot change column 'itemnumber': used in a foreign key constraint 'tmp_holdsqueue_ibfk_1' Test Plan: 1) Upgrade to post 23.06.00.013 2) Note the failure 3) Apply this patch set 4) Run updatedatabase.pl 5) Update should succeed! Signed-off-by: Emily Lamancusa --- .../data/mysql/atomicupdate/bug_35687.pl | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100755 installer/data/mysql/atomicupdate/bug_35687.pl diff --git a/installer/data/mysql/atomicupdate/bug_35687.pl b/installer/data/mysql/atomicupdate/bug_35687.pl new file mode 100755 index 0000000000..68380c0bb3 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_35687.pl @@ -0,0 +1,24 @@ +use Modern::Perl; + +return { + bug_number => "35687", + description => "Upgrade to 23.06.00.013 may fail, drop fk and recreate after adding the pk to tmp_holdsqueue", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + unless ( primary_key_exists( 'tmp_holdsqueue', 'itemnumber' ) ) { + $dbh->do(q{ALTER TABLE tmp_holdsqueue DROP CONSTRAINT `tmp_holdsqueue_ibfk_1`}); + $dbh->do(q{ALTER TABLE tmp_holdsqueue ADD PRIMARY KEY (itemnumber)}); + $dbh->do( + q{ + ALTER TABLE tmp_holdsqueue ADD CONSTRAINT `tmp_holdsqueue_ibfk_1` + FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) + ON DELETE CASCADE ON UPDATE CASCADE + } + ); + } + + say $out "Set primary key for table 'tmp_holdsqueue' to 'itemnumber'"; + }, +}; -- 2.34.1