From 95a7291d3451019b1ed23589908d4b34b3da7395 Mon Sep 17 00:00:00 2001 From: Alex Happy <1223408988@qq.com> Date: Mon, 22 Jun 2026 11:33:38 +0800 Subject: [PATCH 1/3] Fix First-Time Database Deployment Errors on mysql --- scheduler/app/database/init_db.py | 14 ++++++++++++++ scheduler/app/upgrade/6.2.0.sql | 8 ++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/scheduler/app/database/init_db.py b/scheduler/app/database/init_db.py index 91d0f9b..4d10f8d 100755 --- a/scheduler/app/database/init_db.py +++ b/scheduler/app/database/init_db.py @@ -22,6 +22,7 @@ DB_HOST = os.getenv("DB_HOST", "seatable-mysql") DB_PORT = int(os.getenv("DB_PORT", "3306")) DATABASE_NAME = os.getenv("DATABASE_NAME", "scheduler") +CURRENT_VERSION = os.getenv("VERSION", "2.2.4") def wait_for_mysql(): @@ -57,4 +58,17 @@ def wait_for_mysql(): ) os.system(sql) +sql = ( + "mysql -h %s -u%s -p%s %s -e \"INSERT INTO version_history (version, update_at) " + "SELECT '%s', NOW() WHERE NOT EXISTS (SELECT 1 FROM version_history LIMIT 1);\"" + % ( + shlex.quote(DB_HOST), + shlex.quote(db_user), + shlex.quote(db_passwd), + DATABASE_NAME, + CURRENT_VERSION, + ) +) +os.system(sql) + print("Initalization of database successful") diff --git a/scheduler/app/upgrade/6.2.0.sql b/scheduler/app/upgrade/6.2.0.sql index 496e840..86a0c23 100644 --- a/scheduler/app/upgrade/6.2.0.sql +++ b/scheduler/app/upgrade/6.2.0.sql @@ -1,9 +1,9 @@ ALTER TABLE script_log MODIFY started_at DATETIME(6); -ALTER TABLE script_log ADD COLUMN state VARCHAR(10); -ALTER TABLE script_log ADD KEY state_h3u8i9o1_key (state); +ALTER TABLE script_log ADD COLUMN IF NOT EXISTS state VARCHAR(10); +ALTER TABLE script_log ADD INDEX IF NOT EXISTS state_h3u8i9o1_key (state); -ALTER TABLE script_log ADD COLUMN created_at DATETIME(6); -ALTER TABLE script_log ADD KEY created_at_h3u7y9o4_key (created_at); +ALTER TABLE script_log ADD COLUMN IF NOT EXISTS created_at DATETIME(6); +ALTER TABLE script_log ADD INDEX IF NOT EXISTS created_at_h3u7y9o4_key (created_at); UPDATE script_log SET created_at=started_at; From 88d8a09b423d584f78b025b9aa68bc9b7b5315b5 Mon Sep 17 00:00:00 2001 From: Alex Happy <1223408988@qq.com> Date: Mon, 22 Jun 2026 11:44:35 +0800 Subject: [PATCH 2/3] fix black --- scheduler/app/database/init_db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scheduler/app/database/init_db.py b/scheduler/app/database/init_db.py index 4d10f8d..4e7dd2c 100755 --- a/scheduler/app/database/init_db.py +++ b/scheduler/app/database/init_db.py @@ -59,7 +59,7 @@ def wait_for_mysql(): os.system(sql) sql = ( - "mysql -h %s -u%s -p%s %s -e \"INSERT INTO version_history (version, update_at) " + 'mysql -h %s -u%s -p%s %s -e "INSERT INTO version_history (version, update_at) ' "SELECT '%s', NOW() WHERE NOT EXISTS (SELECT 1 FROM version_history LIMIT 1);\"" % ( shlex.quote(DB_HOST), From 8a8fdd8c33dd8a6b14d799ba37c3cb37e59fdba5 Mon Sep 17 00:00:00 2001 From: Alex Happy <1223408988@qq.com> Date: Mon, 22 Jun 2026 12:25:33 +0800 Subject: [PATCH 3/3] add comments --- scheduler/app/database/init_db.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scheduler/app/database/init_db.py b/scheduler/app/database/init_db.py index 4e7dd2c..2a8a053 100755 --- a/scheduler/app/database/init_db.py +++ b/scheduler/app/database/init_db.py @@ -22,6 +22,7 @@ DB_HOST = os.getenv("DB_HOST", "seatable-mysql") DB_PORT = int(os.getenv("DB_PORT", "3306")) DATABASE_NAME = os.getenv("DATABASE_NAME", "scheduler") +# All upgrade statements start from 2.2.4, but here it is not actually 2.2.4—it's just a default value. CURRENT_VERSION = os.getenv("VERSION", "2.2.4") @@ -58,6 +59,7 @@ def wait_for_mysql(): ) os.system(sql) +# Write the current version number directly during the initial deployment. sql = ( 'mysql -h %s -u%s -p%s %s -e "INSERT INTO version_history (version, update_at) ' "SELECT '%s', NOW() WHERE NOT EXISTS (SELECT 1 FROM version_history LIMIT 1);\""