From b07a87ae43f578c30e752933e9ad5a5a8871fd73 Mon Sep 17 00:00:00 2001 From: Kevin Carnes Date: Mon, 27 Nov 2023 09:40:55 +0100 Subject: [PATCH] Bug 34516: Upgrade database fails for 22.11.07.003, points to web installer MySQL requires key length for indexes of text columns, while MariaDB sets it automatically for utf8mb4. Test plan: 1. Setup Koha to use MySQL (e.g. ku-my8) 2. Downgrade database with the following commands (e.g. koha-mysql kohadev): ALTER TABLE `biblioitems` MODIFY COLUMN `publishercode` varchar(255); ALTER TABLE `biblioitems` DROP INDEX `publishercode`; ALTER TABLE `biblioitems` ADD INDEX `publishercode` (`publishercode`); ALTER TABLE `deletedbiblioitems` MODIFY COLUMN `publishercode` varchar(255); ALTER TABLE `deletedbiblioitems` DROP INDEX `publishercode`; ALTER TABLE `deletedbiblioitems` ADD INDEX `publishercode` (`publishercode`); UPDATE systempreferences SET value="23.0600006" WHERE variable = "Version"; 3. Attempt to upgrade the database (e.g. koha-upgrade-schema kohadev) 4. Notice the error about "key specification without a key length" 5. Apply patch 6. Attempt to upgrade the database (e.g. koha-upgrade-schema kohadev) 7. Notice that the database is upgraded 8. Sign off Signed-off-by: Owen Leonard Signed-off-by: Emily Lamancusa Perltidied the database update file. Signed-off-by: Katrin Fischer (cherry picked from commit 4c6517767a86947361b81e0f718ec3833c5d5a33) Signed-off-by: Fridolin Somers --- installer/data/mysql/db_revs/230600007.pl | 94 +++++++++++++++++------ 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/installer/data/mysql/db_revs/230600007.pl b/installer/data/mysql/db_revs/230600007.pl index 92b0736cbb..0a6abe77c2 100755 --- a/installer/data/mysql/db_revs/230600007.pl +++ b/installer/data/mysql/db_revs/230600007.pl @@ -1,64 +1,112 @@ use Modern::Perl; return { - bug_number => "34029", + bug_number => "34029", description => "Extend datatypes in biblioitems and deletedbiblioitems tables to avoid import errors", - up => sub { + up => sub { my ($args) = @_; - my ($dbh, $out) = @$args{qw(dbh out)}; - $dbh->do(q{ + my ( $dbh, $out ) = @$args{qw(dbh out)}; + $dbh->do( + q{ ALTER TABLE `biblioitems` MODIFY COLUMN `place` text DEFAULT NULL COMMENT 'publication place (MARC21 260$a and 264$a)' - }); + } + ); say $out "Updated biblioitems.place to text"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `deletedbiblioitems` MODIFY COLUMN `place` text DEFAULT NULL COMMENT 'publication place (MARC21 260$a and 264$a)' - }); + } + ); say $out "Updated deletedbiblioitems.place to text"; - $dbh->do(q{ + $dbh->do( + q{ + ALTER TABLE `biblioitems` + DROP INDEX `publishercode` + } + ); + say $out "Remove index on biblioitems.publishercode"; + $dbh->do( + q{ ALTER TABLE `biblioitems` MODIFY COLUMN `publishercode` text DEFAULT NULL COMMENT 'publisher (MARC21 260$b and 264$b)' - }); + } + ); say $out "Updated biblioitems.publishercode to text"; - $dbh->do(q{ + $dbh->do( + q{ + ALTER TABLE `biblioitems` + ADD INDEX `publishercode` (`publishercode`(191)) + } + ); + say $out "Create index on biblioitems.publishercode"; + $dbh->do( + q{ + ALTER TABLE `deletedbiblioitems` + DROP INDEX `publishercode` + } + ); + say $out "Remove index on deletedbiblioitems.publishercode"; + $dbh->do( + q{ ALTER TABLE `deletedbiblioitems` MODIFY COLUMN `publishercode` text DEFAULT NULL COMMENT 'publisher (MARC21 260$b and 264$b)' - }); + } + ); say $out "Updated deletedbiblioitems.publishercode to text"; + $dbh->do( + q{ + ALTER TABLE `deletedbiblioitems` + ADD INDEX `publishercode` (`publishercode`(191)) + } + ); + say $out "Create index on deletedbiblioitems.publishercode"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `biblioitems` MODIFY COLUMN `size` text DEFAULT NULL COMMENT 'material size (MARC21 300$c)' - }); + } + ); say $out "Updated biblioitems.size to text"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `deletedbiblioitems` MODIFY COLUMN `size` text DEFAULT NULL COMMENT 'material size (MARC21 300$c)' - }); + } + ); say $out "Updated deletedbiblioitems.size to text"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `biblioitems` MODIFY COLUMN `pages` text DEFAULT NULL COMMENT 'number of pages (MARC21 300$a)' - }); + } + ); say $out "Updated biblioitems.pages to text"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `deletedbiblioitems` MODIFY COLUMN `pages` text DEFAULT NULL COMMENT 'number of pages (MARC21 300$a)' - }); + } + ); say $out "Updated deletedbiblioitems.pages to text"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `biblioitems` MODIFY COLUMN `illus` text DEFAULT NULL COMMENT 'illustrations (MARC21 300$b)' - }); + } + ); say $out "Updated biblioitems.illus to text"; - $dbh->do(q{ + $dbh->do( + q{ ALTER TABLE `deletedbiblioitems` MODIFY COLUMN `illus` text DEFAULT NULL COMMENT 'illustrations (MARC21 300$b)' - }); + } + ); say $out "Updated deletedbiblioitems.illus to text"; }, -- 2.39.5