]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Fix MySQL update procedure with incorrect handling of the FileIndex type
authorEric Bollengier <eric@baculasystems.com>
Tue, 15 Dec 2020 12:48:27 +0000 (13:48 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:02:57 +0000 (09:02 +0100)
Upgrade fails as follows:

   This script will update a Bacula MySQL database
   from any from version 12-15 or 1014-1021 to version 1022
   which is needed to convert from any Bacula Enterprise
   version 4.0.x or later to version 12.4.x
   or Bacula Community versions 5.0.x, 5.2.x, 7.4.x, 9.x.x to
   Community version 11.0

   Depending on the current version of your catalog, you may
   have to run this script multiple times

   ERROR 1264 (22003) at line 24: Out of range value for column 'FileIndex' at row 1
   Update of Bacula MySQL tables from 16 to 1017 failed.

This would indicate that the file_temp table is using an unsigned
version of FileIndex however it should be signed, so changing the
schema of that temp table makes it go further,

bacula/src/cats/update_mysql_tables.in

index affc9fd04801186d9658a20038d20fdb0142e1f7..dbe90cdaa49301d9c7d2197c6fa391881f024995 100644 (file)
@@ -168,7 +168,7 @@ DROP INDEX JobId_2 on File;
 
 CREATE TABLE file_temp (
    FileId BIGINT UNSIGNED NOT NULL,
-   FileIndex INTEGER UNSIGNED DEFAULT 0,
+   FileIndex INTEGER DEFAULT 0,
    JobId INTEGER UNSIGNED NOT NULL,
    PathId INTEGER UNSIGNED NOT NULL,
    Filename BLOB NOT NULL,
@@ -218,7 +218,7 @@ DROP INDEX JobId_2 on File;
 
 CREATE TABLE file_temp (
    FileId BIGINT UNSIGNED NOT NULL,
-   FileIndex INTEGER UNSIGNED DEFAULT 0,
+   FileIndex INTEGER DEFAULT 0,
    JobId INTEGER UNSIGNED NOT NULL,
    PathId INTEGER UNSIGNED NOT NULL,
    Filename BLOB NOT NULL,
@@ -321,9 +321,9 @@ fi
 if [ "$SKIP1018" = 1 -a "$DBVERSION" -eq 1018 ]; then
     if mysql $* -f  <<END-OF-DATA
 USE ${db_name};
-ALTER TABLE File MODIFY FileIndex INTEGER UNSIGNED DEFAULT 0;
-ALTER TABLE RestoreObject MODIFY FileIndex INTEGER UNSIGNED DEFAULT 0;
-ALTER TABLE BaseFiles MODIFY FileIndex INTEGER UNSIGNED DEFAULT 0;
+ALTER TABLE File MODIFY FileIndex INTEGER DEFAULT 0;
+ALTER TABLE RestoreObject MODIFY FileIndex INTEGER DEFAULT 0;
+ALTER TABLE BaseFiles MODIFY FileIndex INTEGER DEFAULT 0;
 UPDATE Version SET VersionId=1019;
 END-OF-DATA
     then