From 58dec572a947e0cc7d614874390db994bc8b710c Mon Sep 17 00:00:00 2001 From: Magnus Enger Date: Mon, 11 Feb 2019 11:07:21 +0100 Subject: [PATCH] Bug 12488 - Make bulkmarcimport.pl -d use DELETE instead of TRUNCATE On MySQL >= 5.5 bulkmarcimport.pl with the -d (delete) switch gives an error like "Cannot truncate a table referenced in a foreign key constraint". This patch proposes to replace the offending TRUNCATE with DELETE. Auto incerement counters are reset to 1 to preserve the functionality from TRUNCATE. To test: - Make sure you havae a test database with some records and items - Run bulkmarcimport.pl with the -d switch - Observe the error described above - Apply this patch - Run bulkmarcimport.pl with the -d switch again - Observe the lack of an error - Verify that the newly imported records and items have biblionumber and itemnumbers starting with 1 --- misc/migration_tools/bulkmarcimport.pl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/misc/migration_tools/bulkmarcimport.pl b/misc/migration_tools/bulkmarcimport.pl index d820d3e991..bd80a69b95 100755 --- a/misc/migration_tools/bulkmarcimport.pl +++ b/misc/migration_tools/bulkmarcimport.pl @@ -176,9 +176,12 @@ if ($fk_off) { if ($delete) { if ($biblios){ print "deleting biblios\n"; - $dbh->do("truncate biblio"); - $dbh->do("truncate biblioitems"); - $dbh->do("truncate items"); + $dbh->do("DELETE FROM biblio"); + $dbh->do("ALTER TABLE biblio AUTO_INCREMENT = 1"); + $dbh->do("DELETE FROM biblioitems"); + $dbh->do("ALTER TABLE biblioitems AUTO_INCREMENT = 1"); + $dbh->do("DELETE FROM items"); + $dbh->do("ALTER TABLE items AUTO_INCREMENT = 1"); } else { print "deleting authorities\n"; -- 2.17.1