From 7ffad7594b650413bbbb88a94d8170b950030356 Mon Sep 17 00:00:00 2001 From: Benjamin Rokseth Date: Thu, 22 Jan 2015 12:21:47 +0100 Subject: [PATCH] Bug 13523 - AddBiblio fails on mysql with STRICT_TRANS_TABLES This patch removes the NOT NULL restriction on biblioitems.marcxml and deletedbiblioitems.marcxml due to STRICT_TRANS_TABLES default in Mysql 5.6.22 and onwards. Test: 1. check mysql global settings: mysql > SELECT @@GLOBAL.sql_mode; verify that STRICT_TRANS_TABLES is not set 2. set STRICT_TRANS_TABLES (or upgrade mysql to > 5.6.21) mysql > SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES'; 3. try to add biblio in Cataloguing module verify that it fails with a "software error" 4. apply patch 5. repeat 3 and verify that there is no "software error" any more Signed-off-by: Jonathan Druart I confirm with the problem with mariadb and STRICT_TRANS_TABLES enabled. On adding a biblio (C4::Biblio::AddBiblio), biblioitems is populate in _koha_add_biblioitem but marxcml is not generated yet. It's in ModBiblioMarc, few lines later. The NOT NULL condition is not valid here. --- installer/data/mysql/kohastructure.sql | 4 ++-- installer/data/mysql/updatedatabase.pl | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index cd83f99..08ef9ee 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -181,7 +181,7 @@ CREATE TABLE `biblioitems` ( -- information related to bibliographic records in `cn_sort` varchar(255) default NULL, -- normalized version of the call number used for sorting `agerestriction` varchar(255) default NULL, -- target audience/age restriction from the bib record (MARC21 521$a) `totalissues` int(10), - `marcxml` longtext NOT NULL, -- full bibliographic MARC record in MARCXML + `marcxml` longtext, -- full bibliographic MARC record in MARCXML PRIMARY KEY (`biblioitemnumber`), KEY `bibinoidx` (`biblioitemnumber`), KEY `bibnoidx` (`biblionumber`), @@ -812,7 +812,7 @@ CREATE TABLE `deletedbiblioitems` ( -- information about bibliographic records t `cn_sort` varchar(255) default NULL, -- normalized version of the call number used for sorting `agerestriction` varchar(255) default NULL, -- target audience/age restriction from the bib record (MARC21 521$a) `totalissues` int(10), - `marcxml` longtext NOT NULL, -- full bibliographic MARC record in MARCXML + `marcxml` longtext, -- full bibliographic MARC record in MARCXML PRIMARY KEY (`biblioitemnumber`), KEY `bibinoidx` (`biblioitemnumber`), KEY `bibnoidx` (`biblionumber`), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index ad8ec97..165dc1e 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -9773,6 +9773,20 @@ if ( CheckVersion($DBversion) ) { SetVersion ($DBversion); } +$DBversion = "3.19.00.XXX"; +if(CheckVersion($DBversion)) { + $dbh->do(q{ + ALTER TABLE biblioitems MODIFY COLUMN marcxml longtext + }); + + $dbh->do(q{ + ALTER TABLE deletedbiblioitems MODIFY COLUMN marcxml longtext + }); + + print "Upgrade to $DBversion done (Bug 13523 - Remove NOT NULL restriction on field marcxml due to mysql STRICT_TRANS_TABLES)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) -- 2.1.0