From f17932a595cede18e138d868cf5243b3032d0e47 Mon Sep 17 00:00:00 2001 From: Leogomat Date: Tue, 20 Jul 2021 16:30:44 +0200 Subject: [PATCH] fixed possible DB dropping problem --- SBF.sql | 14 +++++--------- docker-entrypoint.sh | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/SBF.sql b/SBF.sql index e1fd4469..ac2cfadf 100644 --- a/SBF.sql +++ b/SBF.sql @@ -20,8 +20,7 @@ SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for attributes -- ---------------------------- -DROP TABLE IF EXISTS `attributes`; -CREATE TABLE `attributes` ( +CREATE TABLE IF NOT EXISTS `attributes` ( `id` int(12) NOT NULL AUTO_INCREMENT, `user` int(12) NULL DEFAULT NULL, `key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, @@ -32,8 +31,7 @@ CREATE TABLE `attributes` ( -- ---------------------------- -- Table structure for users -- ---------------------------- -DROP TABLE IF EXISTS `users`; -CREATE TABLE `users` ( +CREATE TABLE IF NOT EXISTS `users` ( `id` int(12) NOT NULL AUTO_INCREMENT, `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `role` int(12) NULL DEFAULT NULL, @@ -45,18 +43,16 @@ CREATE TABLE `users` ( -- ---------------------------- -- Table structure for models -- ---------------------------- -DROP TABLE IF EXISTS `models`; -CREATE TABLE `models` ( +CREATE TABLE IF NOT EXISTS `models` ( `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `model` BLOB NULL DEFAULT NULL, + `model` MEDIUMBLOB NULL DEFAULT NULL, PRIMARY KEY (`name`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for training data -- ---------------------------- -DROP TABLE IF EXISTS `training`; -CREATE TABLE `training` ( +CREATE TABLE IF NOT EXISTS `training` ( `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `data` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`name`) USING BTREE diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 26bdf3d9..3367c79f 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -33,8 +33,30 @@ while ! mysqladmin ping -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} done echo "${DATABASE_HOST}:${DATABASE_PORT} is available. Continuing..." +# Check if all tables are present +if ! mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.attributes" > /dev/null 2>&1; + then + echo "ERROR: Table 'attributes' is not available." +fi + +if ! mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.users" > /dev/null 2>&1; + then + echo "ERROR: Table 'users' is not available." +fi + +if ! mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.models" > /dev/null 2>&1; + then + echo "ERROR: Table 'models' is not available." +fi + +if ! mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.training" > /dev/null 2>&1; + then + echo "ERROR: Table 'training' is not available." +fi + # Create and migrate the database on first run -if ! mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.MESSAGE" > /dev/null 2>&1; then +if ! ( mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.attributes" > /dev/null 2>&1 ) || ! ( mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.users" > /dev/null 2>&1 ) || ! ( mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.models" > /dev/null 2>&1) || ! (mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} -e "desc ${DATABASE_NAME}.training" > /dev/null 2>&1 ) + then echo "Creating database schema..." mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USER} -p${DATABASE_PASSWORD} ${DATABASE_NAME} < ${CREATE_DB_SQL} fi