1#!/bin/sh 2# 3# shell script to create Bacula MySQL tables 4# 5# Copyright (C) 2000-2020 Kern Sibbald 6# License: BSD 2-Clause; see file LICENSE-FOSS 7# 8# Important note: 9# We cannot provide support for performance issues 10# if you changed the default schema. In partcular 11# if you change any of the indexes. 12# 13# Useful commands: 14# mysql -u root 15# show databases; 16# show tables from <database>; 17# show columns from <table> from <database>; 18# 19# use mysql; 20# select user from user; 21# 22bindir=@MYSQL_BINDIR@ 23PATH="$bindir:$PATH" 24db_name=${db_name:-@db_name@} 25 26if mysql $* -f <<END-OF-DATA 27USE ${db_name}; 28-- 29-- Note, we use BLOB rather than TEXT because in MySQL, 30-- BLOBs are identical to TEXT except that BLOB is case 31-- sensitive in sorts, which is what we want, and TEXT 32-- is case insensitive. 33-- 34 35CREATE TABLE TagJob 36( 37 JobId INTEGER UNSIGNED not null, 38 Tag TINYBLOB not null, 39 primary key (JobId, Tag(255)) 40); 41 42CREATE TABLE TagClient 43( 44 ClientId INTEGER UNSIGNED not null, 45 Tag TINYBLOB not null, 46 primary key (ClientId, Tag(255)) 47); 48 49CREATE TABLE TagMedia 50( 51 MediaId INTEGER UNSIGNED not null, 52 Tag TINYBLOB not null, 53 primary key (MediaId, Tag(255)) 54); 55 56CREATE TABLE TagObject 57( 58 ObjectId INTEGER UNSIGNED not null, 59 Tag TINYBLOB not null, 60 primary key (ObjectId, Tag(255)) 61); 62 63CREATE TABLE Object 64( 65 ObjectId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 66 67 JobId INTEGER UNSIGNED not null, 68 Path BLOB NOT NULL, 69 Filename BLOB NOT NULL, 70 PluginName TINYBLOB NOT NULL, 71 72 ObjectType TINYBLOB NOT NULL, 73 ObjectName TINYBLOB NOT NULL, 74 ObjectSource TINYBLOB NOT NULL, 75 ObjectUUID TINYBLOB NOT NULL, 76 ObjectSize bigint NOT NULL, 77 primary key (ObjectId) 78); 79 80create index object_jobid_idx on Object (JobId); 81create index object_type_idx on Object (ObjectType(255)); 82create index object_name_idx on Object (ObjectName(255)); 83create index object_source_idx on Object (ObjectSource(255)); 84 85CREATE TABLE Events 86( 87 EventsId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 88 EventsCode TINYBLOB NOT NULL, 89 EventsType TINYBLOB NOT NULL, 90 EventsTime DATETIME, 91 EventsInsertTime DATETIME, 92 EventsDaemon TINYBLOB NOT NULL, 93 EventsSource TINYBLOB NOT NULL, 94 EventsRef TINYBLOB NOT NULL, 95 EventsText BLOB NOT NULL, 96 primary key (EventsId) 97); 98create index events_time_idx on Events (EventsTime); 99 100CREATE TABLE Path ( 101 PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 102 Path BLOB NOT NULL, 103 PRIMARY KEY(PathId), 104 INDEX (Path(255)) 105 ); 106 107-- We strongly recommend to avoid the temptation to add new indexes. 108-- In general, these will cause very significant performance 109-- problems in other areas. A better approch is to carefully check 110-- that all your memory configuation parameters are 111-- suitable for the size of your installation. If you backup 112-- millions of files, you need to adapt the database memory 113-- configuration parameters concerning sorting, joining and global 114-- memory. By default, sort and join parameters are very small 115-- (sometimes 8Kb), and having sufficient memory specified by those 116-- parameters is extremely important to run fast. 117 118-- In File table 119-- FileIndex can be 0 for FT_DELETED files 120-- FileName can link '' for directories 121CREATE TABLE File ( 122 FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 123 FileIndex INTEGER DEFAULT 0, 124 JobId INTEGER UNSIGNED NOT NULL, 125 PathId INTEGER UNSIGNED NOT NULL, 126 Filename BLOB NOT NULL, 127 DeltaSeq SMALLINT UNSIGNED DEFAULT 0, 128 MarkId INTEGER UNSIGNED DEFAULT 0, 129 LStat TINYBLOB NOT NULL, 130 MD5 TINYBLOB, 131 PRIMARY KEY(FileId), 132 INDEX (JobId), 133 INDEX (JobId, PathId, Filename(255)) 134 ); 135 136CREATE TABLE RestoreObject ( 137 RestoreObjectId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 138 ObjectName BLOB NOT NULL, 139 RestoreObject LONGBLOB NOT NULL, 140 PluginName TINYBLOB NOT NULL, 141 ObjectLength INTEGER DEFAULT 0, 142 ObjectFullLength INTEGER DEFAULT 0, 143 ObjectIndex INTEGER DEFAULT 0, 144 ObjectType INTEGER DEFAULT 0, 145 FileIndex INTEGER DEFAULT 0, 146 JobId INTEGER UNSIGNED NOT NULL, 147 ObjectCompression INTEGER DEFAULT 0, 148 PRIMARY KEY(RestoreObjectId), 149 INDEX (JobId) 150 ); 151 152 153# 154# Possibly add one or more of the following indexes 155# to the above File table if your Verifies are 156# too slow, but they can slow down backups. 157# 158# INDEX (PathId), 159# INDEX (Filename), 160# 161 162CREATE TABLE MediaType ( 163 MediaTypeId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 164 MediaType TINYBLOB NOT NULL, 165 ReadOnly TINYINT DEFAULT 0, 166 PRIMARY KEY(MediaTypeId) 167 ); 168 169CREATE TABLE Storage ( 170 StorageId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 171 Name TINYBLOB NOT NULL, 172 AutoChanger TINYINT DEFAULT 0, 173 PRIMARY KEY(StorageId) 174 ); 175 176CREATE TABLE Device ( 177 DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 178 Name TINYBLOB NOT NULL, 179 MediaTypeId INTEGER UNSIGNED DEFAULT 0, 180 StorageId INTEGER UNSIGNED DEFAULT 0, 181 DevMounts INTEGER UNSIGNED DEFAULT 0, 182 DevReadBytes BIGINT UNSIGNED DEFAULT 0, 183 DevWriteBytes BIGINT UNSIGNED DEFAULT 0, 184 DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0, 185 DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0, 186 DevReadTime BIGINT UNSIGNED DEFAULT 0, 187 DevWriteTime BIGINT UNSIGNED DEFAULT 0, 188 DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0, 189 DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0, 190 CleaningDate DATETIME, 191 CleaningPeriod BIGINT UNSIGNED DEFAULT 0, 192 PRIMARY KEY(DeviceId) 193 ); 194 195 196CREATE TABLE Job ( 197 JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 198 Job TINYBLOB NOT NULL, 199 Name TINYBLOB NOT NULL, 200 Type BINARY(1) NOT NULL, 201 Level BINARY(1) NOT NULL, 202 ClientId INTEGER UNSIGNED DEFAULT 0, 203 JobStatus BINARY(1) NOT NULL, 204 SchedTime DATETIME, 205 StartTime DATETIME, 206 EndTime DATETIME, 207 RealEndTime DATETIME, 208 JobTDate BIGINT UNSIGNED DEFAULT 0, 209 VolSessionId INTEGER UNSIGNED DEFAULT 0, 210 VolSessionTime INTEGER UNSIGNED DEFAULT 0, 211 JobFiles INTEGER UNSIGNED DEFAULT 0, 212 JobBytes BIGINT UNSIGNED DEFAULT 0, 213 ReadBytes BIGINT UNSIGNED DEFAULT 0, 214 JobErrors INTEGER UNSIGNED DEFAULT 0, 215 JobMissingFiles INTEGER UNSIGNED DEFAULT 0, 216 PoolId INTEGER UNSIGNED DEFAULT 0, 217 FileSetId INTEGER UNSIGNED DEFAULT 0, 218 PriorJobId INTEGER UNSIGNED DEFAULT 0, 219 PriorJob TINYBLOB, 220 PurgedFiles TINYINT DEFAULT 0, 221 HasBase TINYINT DEFAULT 0, 222 HasCache TINYINT DEFAULT 0, 223 Reviewed TINYINT DEFAULT 0, 224 Comment BLOB, 225 FileTable CHAR(20) DEFAULT 'File', 226 PRIMARY KEY(JobId), 227 INDEX (Name(128)) 228 ); 229 230-- Create a table like Job for long term statistics 231CREATE TABLE JobHisto ( 232 JobId INTEGER UNSIGNED NOT NULL, 233 Job TINYBLOB NOT NULL, 234 Name TINYBLOB NOT NULL, 235 Type BINARY(1) NOT NULL, 236 Level BINARY(1) NOT NULL, 237 ClientId INTEGER UNSIGNED DEFAULT 0, 238 JobStatus BINARY(1) NOT NULL, 239 SchedTime DATETIME, 240 StartTime DATETIME, 241 EndTime DATETIME, 242 RealEndTime DATETIME, 243 JobTDate BIGINT UNSIGNED DEFAULT 0, 244 VolSessionId INTEGER UNSIGNED DEFAULT 0, 245 VolSessionTime INTEGER UNSIGNED DEFAULT 0, 246 JobFiles INTEGER UNSIGNED DEFAULT 0, 247 JobBytes BIGINT UNSIGNED DEFAULT 0, 248 ReadBytes BIGINT UNSIGNED DEFAULT 0, 249 JobErrors INTEGER UNSIGNED DEFAULT 0, 250 JobMissingFiles INTEGER UNSIGNED DEFAULT 0, 251 PoolId INTEGER UNSIGNED DEFAULT 0, 252 FileSetId INTEGER UNSIGNED DEFAULT 0, 253 PriorJobId INTEGER UNSIGNED DEFAULT 0, 254 PriorJob TINYBLOB, 255 PurgedFiles TINYINT DEFAULT 0, 256 HasBase TINYINT DEFAULT 0, 257 HasCache TINYINT DEFAULT 0, 258 Reviewed TINYINT DEFAULT 0, 259 Comment BLOB, 260 FileTable CHAR(20) DEFAULT 'File', 261 INDEX (JobId), 262 INDEX (StartTime), 263 INDEX (JobTDate) 264 ); 265 266CREATE TABLE Location ( 267 LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 268 Location TINYBLOB NOT NULL, 269 Cost INTEGER DEFAULT 0, 270 Enabled TINYINT, 271 PRIMARY KEY(LocationId) 272 ); 273 274CREATE TABLE LocationLog ( 275 LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 276 Date DATETIME, 277 Comment BLOB NOT NULL, 278 MediaId INTEGER UNSIGNED DEFAULT 0, 279 LocationId INTEGER UNSIGNED DEFAULT 0, 280 NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged', 281 'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL, 282 NewEnabled TINYINT, 283 PRIMARY KEY(LocLogId) 284); 285 286 287# 288CREATE TABLE FileSet ( 289 FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 290 FileSet TINYBLOB NOT NULL, 291 MD5 TINYBLOB, 292 CreateTime DATETIME, 293 PRIMARY KEY(FileSetId) 294 ); 295 296CREATE TABLE JobMedia ( 297 JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 298 JobId INTEGER UNSIGNED NOT NULL, 299 MediaId INTEGER UNSIGNED NOT NULL, 300 FirstIndex INTEGER UNSIGNED DEFAULT 0, 301 LastIndex INTEGER UNSIGNED DEFAULT 0, 302 StartFile INTEGER UNSIGNED DEFAULT 0, 303 EndFile INTEGER UNSIGNED DEFAULT 0, 304 StartBlock INTEGER UNSIGNED DEFAULT 0, 305 EndBlock INTEGER UNSIGNED DEFAULT 0, 306 VolIndex INTEGER UNSIGNED DEFAULT 0, 307 PRIMARY KEY(JobMediaId), 308 INDEX (JobId, MediaId) 309 ); 310 311CREATE TABLE FileMedia 312( 313 JobId integer UNSIGNED not null, 314 FileIndex integer UNSIGNED not null, 315 MediaId integer UNSIGNED not null, 316 BlockAddress bigint UNSIGNED default 0, 317 RecordNo integer UNSIGNED default 0, 318 FileOffset bigint UNSIGNED default 0, 319 INDEX (JobId, FileIndex) 320); 321 322CREATE TABLE Media ( 323 MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 324 VolumeName TINYBLOB NOT NULL, 325 Slot INTEGER DEFAULT 0, 326 PoolId INTEGER UNSIGNED DEFAULT 0, 327 MediaType TINYBLOB NOT NULL, 328 MediaTypeId INTEGER UNSIGNED DEFAULT 0, 329 LabelType TINYINT DEFAULT 0, 330 FirstWritten DATETIME, 331 LastWritten DATETIME, 332 LabelDate DATETIME, 333 VolJobs INTEGER UNSIGNED DEFAULT 0, 334 VolFiles INTEGER UNSIGNED DEFAULT 0, 335 VolBlocks INTEGER UNSIGNED DEFAULT 0, 336 VolParts INTEGER UNSIGNED DEFAULT 0, 337 VolCloudParts INTEGER UNSIGNED DEFAULT 0, 338 VolMounts INTEGER UNSIGNED DEFAULT 0, 339 VolBytes BIGINT UNSIGNED DEFAULT 0, 340 VolABytes BIGINT UNSIGNED DEFAULT 0, 341 VolAPadding BIGINT UNSIGNED DEFAULT 0, 342 VolHoleBytes BIGINT UNSIGNED DEFAULT 0, 343 VolHoles INTEGER UNSIGNED DEFAULT 0, 344 LastPartBytes BIGINT UNSIGNED DEFAULT 0, 345 VolType INTEGER UNSIGNED DEFAULT 0, 346 VolErrors INTEGER UNSIGNED DEFAULT 0, 347 VolWrites BIGINT UNSIGNED DEFAULT 0, 348 VolCapacityBytes BIGINT UNSIGNED DEFAULT 0, 349 VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged', 350 'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL, 351 Enabled TINYINT DEFAULT 1, 352 Recycle TINYINT DEFAULT 0, 353 ActionOnPurge TINYINT DEFAULT 0, 354 CacheRetention BIGINT UNSIGNED DEFAULT 0, 355 VolRetention BIGINT UNSIGNED DEFAULT 0, 356 VolUseDuration BIGINT UNSIGNED DEFAULT 0, 357 MaxVolJobs INTEGER UNSIGNED DEFAULT 0, 358 MaxVolFiles INTEGER UNSIGNED DEFAULT 0, 359 MaxVolBytes BIGINT UNSIGNED DEFAULT 0, 360 InChanger TINYINT DEFAULT 0, 361 StorageId INTEGER UNSIGNED DEFAULT 0, 362 DeviceId INTEGER UNSIGNED DEFAULT 0, 363 MediaAddressing TINYINT DEFAULT 0, 364 VolReadTime BIGINT UNSIGNED DEFAULT 0, 365 VolWriteTime BIGINT UNSIGNED DEFAULT 0, 366 EndFile INTEGER UNSIGNED DEFAULT 0, 367 EndBlock INTEGER UNSIGNED DEFAULT 0, 368 LocationId INTEGER UNSIGNED DEFAULT 0, 369 RecycleCount INTEGER UNSIGNED DEFAULT 0, 370 InitialWrite DATETIME, 371 ScratchPoolId INTEGER UNSIGNED DEFAULT 0, 372 RecyclePoolId INTEGER UNSIGNED DEFAULT 0, 373 Comment BLOB, 374 PRIMARY KEY(MediaId), 375 UNIQUE (VolumeName(128)), 376 INDEX (PoolId), 377 INDEX (StorageId) 378 ); 379 380CREATE TABLE Pool ( 381 PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 382 Name TINYBLOB NOT NULL, 383 NumVols INTEGER UNSIGNED DEFAULT 0, 384 MaxVols INTEGER UNSIGNED DEFAULT 0, 385 UseOnce TINYINT DEFAULT 0, 386 UseCatalog TINYINT DEFAULT 0, 387 AcceptAnyVolume TINYINT DEFAULT 0, 388 VolRetention BIGINT UNSIGNED DEFAULT 0, 389 CacheRetention BIGINT UNSIGNED DEFAULT 0, 390 VolUseDuration BIGINT UNSIGNED DEFAULT 0, 391 MaxVolJobs INTEGER UNSIGNED DEFAULT 0, 392 MaxVolFiles INTEGER UNSIGNED DEFAULT 0, 393 MaxVolBytes BIGINT UNSIGNED DEFAULT 0, 394 MaxPoolBytes BIGINT UNSIGNED DEFAULT 0, 395 AutoPrune TINYINT DEFAULT 0, 396 Recycle TINYINT DEFAULT 0, 397 ActionOnPurge TINYINT DEFAULT 0, 398 PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL, 399 LabelType TINYINT DEFAULT 0, 400 LabelFormat TINYBLOB, 401 Enabled TINYINT DEFAULT 1, 402 ScratchPoolId INTEGER UNSIGNED DEFAULT 0, 403 RecyclePoolId INTEGER UNSIGNED DEFAULT 0, 404 NextPoolId INTEGER UNSIGNED DEFAULT 0, 405 MigrationHighBytes BIGINT UNSIGNED DEFAULT 0, 406 MigrationLowBytes BIGINT UNSIGNED DEFAULT 0, 407 MigrationTime BIGINT UNSIGNED DEFAULT 0, 408 UNIQUE (Name(128)), 409 PRIMARY KEY (PoolId) 410 ); 411 412 413CREATE TABLE Client ( 414 ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 415 Name TINYBLOB NOT NULL, 416 Uname TINYBLOB NOT NULL, /* full uname -a of client */ 417 AutoPrune TINYINT DEFAULT 0, 418 FileRetention BIGINT UNSIGNED DEFAULT 0, 419 JobRetention BIGINT UNSIGNED DEFAULT 0, 420 UNIQUE (Name(128)), 421 PRIMARY KEY(ClientId) 422 ); 423 424CREATE TABLE Log ( 425 LogId INTEGER UNSIGNED AUTO_INCREMENT, 426 JobId INTEGER UNSIGNED DEFAULT 0, 427 Time DATETIME, 428 LogText BLOB NOT NULL, 429 PRIMARY KEY(LogId), 430 INDEX (JobId) 431 ); 432 433 434CREATE TABLE BaseFiles ( 435 BaseId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 436 BaseJobId INTEGER UNSIGNED NOT NULL, 437 JobId INTEGER UNSIGNED NOT NULL, 438 FileId BIGINT UNSIGNED NOT NULL, 439 FileIndex INTEGER DEFAULT 0, 440 PRIMARY KEY(BaseId) 441 ); 442 443CREATE INDEX basefiles_jobid_idx ON BaseFiles ( JobId ); 444 445CREATE TABLE UnsavedFiles ( 446 UnsavedId INTEGER UNSIGNED AUTO_INCREMENT, 447 JobId INTEGER UNSIGNED NOT NULL, 448 PathId INTEGER UNSIGNED NOT NULL, 449 Filename BLOB NOT NULL, 450 PRIMARY KEY (UnsavedId) 451 ); 452 453 454 455CREATE TABLE Counters ( 456 Counter TINYBLOB NOT NULL, 457 \`MinValue\` INTEGER DEFAULT 0, 458 \`MaxValue\` INTEGER DEFAULT 0, 459 CurrentValue INTEGER DEFAULT 0, 460 WrapCounter TINYBLOB NOT NULL, 461 PRIMARY KEY (Counter(128)) 462 ); 463 464CREATE TABLE CDImages ( 465 MediaId INTEGER UNSIGNED NOT NULL, 466 LastBurn DATETIME, 467 PRIMARY KEY (MediaId) 468 ); 469 470CREATE TABLE Status ( 471 JobStatus CHAR(1) BINARY NOT NULL, 472 JobStatusLong BLOB, 473 Severity INT, 474 PRIMARY KEY (JobStatus) 475 ); 476 477INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 478 ('C', 'Created, not yet running',15), 479 ('R', 'Running',15), 480 ('B', 'Blocked',15), 481 ('T', 'Completed successfully',10), 482 ('E', 'Terminated with errors',25), 483 ('e', 'Non-fatal error',20), 484 ('f', 'Fatal error',100), 485 ('D', 'Verify found differences',15), 486 ('A', 'Canceled by user',90), 487 ('F', 'Waiting for Client',15), 488 ('S', 'Waiting for Storage daemon',15), 489 ('m', 'Waiting for new media',15), 490 ('M', 'Waiting for media mount',15), 491 ('s', 'Waiting for storage resource',15), 492 ('j', 'Waiting for job resource',15), 493 ('c', 'Waiting for client resource',15), 494 ('d', 'Waiting on maximum jobs',15), 495 ('t', 'Waiting on start time',15), 496 ('p', 'Waiting on higher priority jobs',15), 497 ('i', 'Doing batch insert file records',15), 498 ('I', 'Incomplete Job',25), 499 ('a', 'SD despooling attributes',15); 500 501CREATE TABLE PathHierarchy 502( 503 PathId INTEGER UNSIGNED NOT NULL, 504 PPathId INTEGER UNSIGNED NOT NULL, 505 CONSTRAINT pathhierarchy_pkey PRIMARY KEY (PathId) 506); 507 508CREATE INDEX pathhierarchy_ppathid 509 ON PathHierarchy (PPathId); 510 511CREATE TABLE PathVisibility 512( 513 PathId INTEGER UNSIGNED NOT NULL, 514 JobId INTEGER UNSIGNED NOT NULL, 515 Size int8 DEFAULT 0, 516 Files int4 DEFAULT 0, 517 CONSTRAINT pathvisibility_pkey PRIMARY KEY (JobId, PathId) 518); 519CREATE INDEX pathvisibility_jobid 520 ON PathVisibility (JobId); 521 522 523CREATE TABLE Snapshot ( 524 SnapshotId INTEGER UNSIGNED AUTO_INCREMENT, 525 Name TINYBLOB NOT NULL, 526 JobId INTEGER DEFAULT 0, 527 FileSetId INTEGER DEFAULT 0, 528 CreateTDate BIGINT NOT NULL, 529 CreateDate DATETIME NOT NULL, 530 ClientId INTEGER DEFAULT 0, 531 Volume TINYBLOB NOT NULL, 532 Device TINYBLOB NOT NULL, 533 Type TINYBLOB NOT NULL, 534 Retention INTEGER DEFAULT 0, 535 Comment BLOB, 536 primary key (SnapshotId) 537); 538 539CREATE UNIQUE INDEX snapshot_idx ON Snapshot (Device(255), 540 Volume(255), 541 Name(255)); 542 543 544 545CREATE TABLE Version ( 546 VersionId INTEGER UNSIGNED NOT NULL 547 ); 548 549-- Initialize Version 550INSERT INTO Version (VersionId) VALUES (1022); 551 552END-OF-DATA 553then 554 echo "Creation of Bacula MySQL tables succeeded." 555else 556 echo "Creation of Bacula MySQL tables failed." 557fi 558exit 0 559