View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000705 | bareos-core | director | public | 2016-10-07 12:24 | 2017-12-18 12:11 |
| Reporter | joergs | Assigned To | |||
| Priority | low | Severity | feature | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Fixed in Version | 17.2.4 | ||||
| Summary | 0000705: create_bareos_database fails on MySQL 5.7 | ||||
| Description | Calling the script against a MySQL 5.7 database results in following error messages: Making mysql tables ERROR 1067 (42000) at line 88: Invalid default value for 'CleaningDate' ERROR 1067 (42000) at line 107: Invalid default value for 'SchedTime' ERROR 1067 (42000) at line 140: Invalid default value for 'SchedTime' ERROR 1067 (42000) at line 180: Invalid default value for 'Date' ERROR 1067 (42000) at line 192: Invalid default value for 'CreateTime' ERROR 1067 (42000) at line 215: Invalid default value for 'FirstWritten' ERROR 1067 (42000) at line 310: Invalid default value for 'Time' ERROR 1171 (42000) at line 379: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead Creation of Bareos MySQL tables succeeded. | ||||
| Additional Information | The Bareos database creation script set DATETIME columns by default to 0, which is no longer allowed in MySQL 5.7: e.g. "SchedTime DATETIME DEFAULT 0," The other problem is at CREATE TABLE Quota ( ClientId INT UNSIGNED DEFAULT NULL, GraceTime BIGINT DEFAULT 0, QuotaLimit BIGINT UNSIGNED DEFAULT 0, PRIMARY KEY (ClientId) ); This results into the error message: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead | ||||
| Tags | No tags attached. | ||||
| It is planed to fix this someday in the future. For now, we recommend to use MariaDB instead (which is also the default on most Linux distributions). | |
|
Is there any workaround for those of us who are stuck with MySql >=5.7 ? When I run a job. I get this error: JobId 0: Fatal error: sql_create.c:97 Create DB Job record INSERT INTO Job (Job,Name,Type,Level,JobStatus,SchedTime,JobTDate,ClientId,Comment) VALUES ('MyBackup.2017-01-23_15.27.15_46','MyBackup','B','F','C','2017-01-23 15:27:11',1485203231,3,'') failed. ERR=Incorrect datetime value: '0000-00-00 00:00:00' for column 'StartTime' at row 1 It's been 4 months since this was last reported. I guess someone would have come up with a workaround. |
|
|
I fixed it under Ubuntu 16.04.1 with MySQL 5.7.17 by manuipulating the create-File under "/usr/lib/bareos/scripts/ddl/creates/mysql.sql" The date-problem could be fixed by "sed -i 's/DATETIME DEFAULT 0/DATETIME DEFAULT CURRENT_TIMESTAMP/g' mysql.sql" I think that an older date at creation time ist not necessary. There are two other options (NDMP...) with an wrong value of 256 and should be 255. "CONSTRAINT NDMPLevelMap_pkey PRIMARY KEY (ClientId, FilesetId, FileSystem(255))" "CONSTRAINT NDMPJobEnvironment_pkey PRIMARY KEY (JobId, FileIndex, EnvName(255))" Hope this helps. |
|
|
Thanks Andreas.vdL. I used the following workaround - 1. vim /etc/mysql/mysql.conf.d/mysqld.cnf 2. add/update sql_mode=NO_ENGINE_SUBSTITUTION (remove STRICT_TRANS_TABLES) |
|
|
Moving to MySQL 5.7 and PHP7.0, I experienced the same for sql statements throughout our systems. Once we upgraded bareos from 15.x to 16.x I noticed the problems here. I highly suggest to integrate a solution as suggested by @Andreas.vdL MariaDB might be nice, but many people out there (like us) are using MySQL. It is well known and handles large amounts of bareos clients (like in our companies). |
|
| So maybe somebody can provide a patch/github pull request? | |
|
0001-updated-MySQL-creation-schema-to-current-standards.patch (7,801 bytes)
From b04e8bf2781c35d4f4e2835c1ee26a36519e278a Mon Sep 17 00:00:00 2001
From: Jan Huisink <huisink@mpie.de>
Date: Wed, 3 May 2017 15:35:09 +0200
Subject: [PATCH] updated MySQL creation schema to current standards
---
src/cats/ddl/creates/mysql.sql | 74 +++++++++++++++++++++---------------------
1 file changed, 37 insertions(+), 37 deletions(-)
diff --git a/src/cats/ddl/creates/mysql.sql b/src/cats/ddl/creates/mysql.sql
index 74ed62e7..755b50ba 100644
--- a/src/cats/ddl/creates/mysql.sql
+++ b/src/cats/ddl/creates/mysql.sql
@@ -89,8 +89,8 @@ CREATE TABLE Storage (
CREATE TABLE Device (
DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Name TINYBLOB NOT NULL,
- MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,
- StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,
+ MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType(MediaTypeId),
+ StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage(StorageId),
DevMounts INTEGER UNSIGNED DEFAULT 0,
DevReadBytes BIGINT UNSIGNED DEFAULT 0,
DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
@@ -100,7 +100,7 @@ CREATE TABLE Device (
DevWriteTime BIGINT UNSIGNED DEFAULT 0,
DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
- CleaningDate DATETIME DEFAULT 0,
+ CleaningDate DATETIME DEFAULT NULL,
CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
PRIMARY KEY(DeviceId)
);
@@ -111,12 +111,12 @@ CREATE TABLE Job (
Name TINYBLOB NOT NULL,
Type BINARY(1) NOT NULL,
Level BINARY(1) NOT NULL,
- ClientId INTEGER DEFAULT 0 REFERENCES Client,
+ ClientId INTEGER DEFAULT 0 REFERENCES Client(ClientId),
JobStatus BINARY(1) NOT NULL,
- SchedTime DATETIME DEFAULT 0,
- StartTime DATETIME DEFAULT 0,
- EndTime DATETIME DEFAULT 0,
- RealEndTime DATETIME DEFAULT 0,
+ SchedTime DATETIME DEFAULT NULL,
+ StartTime DATETIME DEFAULT NULL,
+ EndTime DATETIME DEFAULT NULL,
+ RealEndTime DATETIME DEFAULT NULL,
JobTDate BIGINT UNSIGNED DEFAULT 0,
VolSessionId INTEGER UNSIGNED DEFAULT 0,
VolSessionTime INTEGER UNSIGNED DEFAULT 0,
@@ -125,9 +125,9 @@ CREATE TABLE Job (
ReadBytes BIGINT UNSIGNED DEFAULT 0,
JobErrors INTEGER UNSIGNED DEFAULT 0,
JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
- PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
- FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet,
- PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
+ PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool(PoolId),
+ FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet(FileSetId),
+ PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job(JobId),
PurgedFiles TINYINT DEFAULT 0,
HasBase TINYINT DEFAULT 0,
HasCache TINYINT DEFAULT 0,
@@ -146,10 +146,10 @@ CREATE TABLE JobHisto (
Level BINARY(1) NOT NULL,
ClientId INTEGER DEFAULT 0,
JobStatus BINARY(1) NOT NULL,
- SchedTime DATETIME DEFAULT 0,
- StartTime DATETIME DEFAULT 0,
- EndTime DATETIME DEFAULT 0,
- RealEndTime DATETIME DEFAULT 0,
+ SchedTime DATETIME DEFAULT NULL,
+ StartTime DATETIME DEFAULT NULL,
+ EndTime DATETIME DEFAULT NULL,
+ RealEndTime DATETIME DEFAULT NULL,
JobTDate BIGINT UNSIGNED DEFAULT 0,
VolSessionId INTEGER UNSIGNED DEFAULT 0,
VolSessionTime INTEGER UNSIGNED DEFAULT 0,
@@ -180,10 +180,10 @@ CREATE TABLE Location (
CREATE TABLE LocationLog (
LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- Date DATETIME DEFAULT 0,
+ Date DATETIME DEFAULT NULL,
Comment BLOB NOT NULL,
- MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media,
- LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,
+ MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media(MediaId),
+ LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location(LocationId),
NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
NewEnabled TINYINT,
@@ -194,7 +194,7 @@ CREATE TABLE FileSet (
FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FileSet TINYBLOB NOT NULL,
MD5 TINYBLOB,
- CreateTime DATETIME DEFAULT 0,
+ CreateTime DATETIME DEFAULT NULL,
FileSetText BLOB NOT NULL,
PRIMARY KEY(FileSetId)
);
@@ -218,13 +218,13 @@ CREATE TABLE Media (
MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
VolumeName TINYBLOB NOT NULL,
Slot INTEGER DEFAULT 0,
- PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+ PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool(PoolId),
MediaType TINYBLOB NOT NULL,
- MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,
+ MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType(MediaTypeId),
LabelType TINYINT DEFAULT 0,
- FirstWritten DATETIME DEFAULT 0,
- LastWritten DATETIME DEFAULT 0,
- LabelDate DATETIME DEFAULT 0,
+ FirstWritten DATETIME DEFAULT NULL,
+ LastWritten DATETIME DEFAULT NULL,
+ LabelDate DATETIME DEFAULT NULL,
VolJobs INTEGER UNSIGNED DEFAULT 0,
VolFiles INTEGER UNSIGNED DEFAULT 0,
VolBlocks INTEGER UNSIGNED DEFAULT 0,
@@ -245,20 +245,20 @@ CREATE TABLE Media (
MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
InChanger TINYINT DEFAULT 0,
- StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,
- DeviceId INTEGER UNSIGNED DEFAULT 0 REFERENCES Device,
+ StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage(StorageId),
+ DeviceId INTEGER UNSIGNED DEFAULT 0 REFERENCES Device(DeviceId),
MediaAddressing TINYINT DEFAULT 0,
VolReadTime BIGINT UNSIGNED DEFAULT 0,
VolWriteTime BIGINT UNSIGNED DEFAULT 0,
EndFile INTEGER UNSIGNED DEFAULT 0,
EndBlock INTEGER UNSIGNED DEFAULT 0,
- LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,
+ LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location(LocationId),
RecycleCount INTEGER UNSIGNED DEFAULT 0,
MinBlockSize INTEGER UNSIGNED DEFAULT 0,
MaxBlockSize INTEGER UNSIGNED DEFAULT 0,
- InitialWrite DATETIME DEFAULT 0,
- ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
- RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+ InitialWrite DATETIME DEFAULT NULL,
+ ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool(PoolId),
+ RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool(PoolId),
EncryptionKey TINYBLOB,
Comment BLOB,
PRIMARY KEY(MediaId),
@@ -311,8 +311,8 @@ CREATE TABLE Client (
CREATE TABLE Log (
LogId INTEGER UNSIGNED AUTO_INCREMENT,
- JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
- Time DATETIME DEFAULT 0,
+ JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job(JobId),
+ Time DATETIME DEFAULT NULL,
LogText BLOB NOT NULL,
PRIMARY KEY(LogId),
INDEX (JobId)
@@ -386,19 +386,19 @@ CREATE TABLE Quota (
);
CREATE TABLE NDMPLevelMap (
- ClientId INTEGER DEFAULT 0 REFERENCES Client,
- FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet,
+ ClientId INTEGER DEFAULT 0 REFERENCES Client(ClientId),
+ FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet(FileSetId),
FileSystem TINYBLOB NOT NULL,
DumpLevel INTEGER NOT NULL,
- CONSTRAINT NDMPLevelMap_pkey PRIMARY KEY (ClientId, FilesetId, FileSystem(256))
+ CONSTRAINT NDMPLevelMap_pkey PRIMARY KEY (ClientId, FilesetId, FileSystem(255))
);
CREATE TABLE NDMPJobEnvironment (
- JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+ JobId INTEGER UNSIGNED NOT NULL REFERENCES Job(JobId),
FileIndex INTEGER UNSIGNED NOT NULL,
EnvName TINYBLOB NOT NULL,
EnvValue TINYBLOB NOT NULL,
- CONSTRAINT NDMPJobEnvironment_pkey PRIMARY KEY (JobId, FileIndex, EnvName(256))
+ CONSTRAINT NDMPJobEnvironment_pkey PRIMARY KEY (JobId, FileIndex, EnvName(255))
);
CREATE TABLE DeviceStats (
--
2.11.0 (Apple Git-81)
|
|
| I just attached a patch which will fix the issue with MySQL >= 5.7. | |
| That you for the patch. We included it in bareos-17.2. | |
| Patch integrated and tested against bareos-regress against, MariaDB, MySQL 5.5 and MySQL 5.7. | |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2016-10-07 12:24 | joergs | New Issue | |
| 2016-10-07 12:25 | joergs | Relationship added | related to 0000660 |
| 2016-10-07 12:27 | joergs | Note Added: 0002375 | |
| 2017-01-23 22:33 | bareos_user | Note Added: 0002526 | |
| 2017-01-30 11:46 | Andreas.vdL | Note Added: 0002540 | |
| 2017-02-10 16:22 | bareos_user | Note Added: 0002558 | |
| 2017-02-14 10:40 | jacknob | Note Added: 0002561 | |
| 2017-02-14 10:44 | joergs | Note Added: 0002562 | |
| 2017-05-03 15:48 | Keksdose | File Added: 0001-updated-MySQL-creation-schema-to-current-standards.patch | |
| 2017-05-03 15:49 | Keksdose | Note Added: 0002633 | |
| 2017-11-28 12:31 | joergs | Assigned To | => joergs |
| 2017-11-28 12:31 | joergs | Status | new => assigned |
| 2017-11-28 12:32 | joergs | Relationship added | has duplicate 0000809 |
| 2017-11-28 12:33 | joergs | Relationship replaced | has duplicate 0000660 |
| 2017-11-28 12:35 | joergs | Relationship added | has duplicate 0000842 |
| 2017-12-14 12:41 | joergs | Changeset attached | => bareos bareos-17.2 964ef032 |
| 2017-12-14 12:43 | joergs | Note Added: 0002839 | |
| 2017-12-14 12:43 | joergs | Status | assigned => resolved |
| 2017-12-14 12:43 | joergs | Fixed in Version | => 17.2.4 |
| 2017-12-14 12:43 | joergs | Resolution | open => fixed |
| 2017-12-18 12:05 | joergs | Relationship added | child of 0000861 |
| 2017-12-18 12:11 | joergs | Note Added: 0002842 | |
| 2017-12-18 12:11 | joergs | Status | resolved => closed |
| 2017-12-18 12:11 | joergs | Assigned To | joergs => |