Bug 14069: Drop existing primary key on items if exists
authorJonathan Druart <jonathan.druart@biblibre.com>
Wed, 29 Apr 2015 08:15:50 +0000 (10:15 +0200)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Mon, 4 May 2015 14:26:12 +0000 (11:26 -0300)
On old databases, the issues table has a primary key on itemnumber.
The DBrev 3.19.00.028 (Bug 13790 - Add unique id issue_id to issues and
oldissues tables) has to remove it before adding the new primary key

Test plan:
1/ Make sure you have an old DB, or add primary key (issues.itemnumber)manually
on a DB created before 3.19.00.028.
2/ Execute the updatedatabase.pl script
3/ You should not get any error and the primary key on itemnumber should
have been removed and the new one created as expected.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
No koha-qa errors

Tested using a 3.4 db (3.0404000)
Interestingly, it gives a similar error on the same table but
on another (older $DBversion = "3.05.00.009";) update

1) Pre-patch, 3.4 DB, updatedatabase from master, errors
(older)
DBD::mysql::db do failed: Multiple primary key defined at installer/data/mysql/updatedatabase.pl line 4435.
(13790)
DBD::mysql::db do failed: Multiple primary key defined at installer/data/mysql/updatedatabase.pl line 10166.
DBD::mysql::db do failed: Unknown column 'issue_id' in 'order clause' at installer/data/mysql/updatedatabase.pl line 10170.
DBD::mysql::st execute failed: Unknown column 'me.issue_id' in 'field list' at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 1593.
DBIx::Class::ResultSetColumn::max(): Unknown column 'me.issue_id' in 'field list' at installer/data/mysql/updatedatabase.pl line 10174

2) Post-patch, same conditions
(only older)
DBD::mysql::db do failed: Multiple primary key defined at installer/data/mysql/updatedatabase.pl line 4435.

There are other warnings, but nor related with keys.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
installer/data/mysql/updatedatabase.pl

index a39a19f..56dbb1a 100755 (executable)
@@ -10155,6 +10155,13 @@ if ( CheckVersion($DBversion) ) {
 
 $DBversion = "3.19.00.028";
 if( CheckVersion($DBversion) ) {
+    eval {
+        local $dbh->{PrintError} = 0;
+        $dbh->do(q{
+            ALTER TABLE issues DROP PRIMARY KEY
+        });
+    };
+
     $dbh->do(q{
         ALTER TABLE old_issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
     });