From 05158fb59b5bda2e360bd3163651f01d50bea6d5 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 14 Feb 2017 14:39:48 +0000 Subject: [PATCH] [SIGNED-OFF] Bug 18058: Allow borrower_message_preferences to be truncated borrower_message_preferences cannot be truncated because of the foreign. DBMS fails with "Cannot truncate a table referenced in a foreign key constraint" To avoid that we should remove the FK check and truncate the other table as well. I am wondering if we really need a truncate here DELETE FROM borrower_message_preferences; should do the job, but leave it as it because of the param name. Test plan perl misc/maintenance/borrowers-force-messaging-defaults --doit --truncate Should no longer raise the error message Signed-off-by: Mark Tompsett --- misc/maintenance/borrowers-force-messaging-defaults | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/misc/maintenance/borrowers-force-messaging-defaults b/misc/maintenance/borrowers-force-messaging-defaults index b0630e1..b17137e 100755 --- a/misc/maintenance/borrowers-force-messaging-defaults +++ b/misc/maintenance/borrowers-force-messaging-defaults @@ -48,8 +48,10 @@ sub force_borrower_messaging_defaults { $dbh->{AutoCommit} = 0; if ( $doit && $truncate ) { - my $sth = $dbh->prepare("TRUNCATE borrower_message_preferences"); - $sth->execute(); + $dbh->do(q|SET FOREIGN_KEY_CHECKS = 0|); + $dbh->do(q|TRUNCATE borrower_message_transport_preferences|); + $dbh->do(q|TRUNCATE borrower_message_preferences|); + $dbh->do(q|SET FOREIGN_KEY_CHECKS = 1|); } my $sth = $dbh->prepare("SELECT borrowernumber, categorycode FROM borrowers WHERE dateenrolled >= ?"); -- 2.1.4