Bug 15207: Avoid warnings when adding constraint course_reserves_ibfk_2
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 25 Nov 2015 13:49:51 +0000 (13:49 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Wed, 25 Nov 2015 15:29:58 +0000 (12:29 -0300)
Bug 14205 added a new foreign key on the course_reserve table.
As this dbrev has been backported to the stable version (3.20.x), the
next dbrev should take care of this existing constraint to avoid
warnings.

Test plan:
1/ replace the modified dbrev with 3.21.00.XXX to make sure it will be
executed
2/ Make sure you have the KEY and the FK on the course_reserves table:
sql> alter table course_reserves add CONSTRAINT `course_reserves_ibfk_2`
FOREIGN KEY (`ci_id`) REFERENCES `course_items` (`ci_id`) ON DELETE
CASCADE ON UPDATE CASCADE;
sql> alter table course_reserves ADD KEY `course_reserves_ibfk_2` (`ci_id`);

3/ SHOW CREATE TABLE course_reserves
should show that the table is not in sync with the kohastructure.sql file
4/ Execute the dbrev
5/ SHOW CREATE TABLE course_reserves
should show that the table is in sync with the kohastructure.sql file

Repeat 4 and 5, confirm you don't get any error.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
installer/data/mysql/updatedatabase.pl

index a61f3c0..542b8da 100755 (executable)
@@ -10801,9 +10801,17 @@ if ( CheckVersion($DBversion) ) {
         LEFT JOIN course_items USING(ci_id)
         WHERE course_items.ci_id IS NULL
     });
+
+    my ($print_error) = $dbh->{PrintError};
+    $dbh->{RaiseError} = 0;
+    $dbh->{PrintError} = 0;
+    $dbh->do(q{ALTER TABLE course_reserves DROP FOREIGN KEY course_reserves_ibfk_2});
+    $dbh->do(q{ALTER TABLE course_reserves DROP INDEX course_reserves_ibfk_2});
+    $dbh->{PrintError} = $print_error;
+
     $dbh->do(q{
         ALTER IGNORE TABLE course_reserves
-            add CONSTRAINT course_reserves_ibfk_2
+            ADD CONSTRAINT course_reserves_ibfk_2
                 FOREIGN KEY (ci_id) REFERENCES course_items (ci_id)
                 ON DELETE CASCADE ON UPDATE CASCADE
     });