From 396862f59d9e7b2b2bc1491d052ad56fc9a2e328 Mon Sep 17 00:00:00 2001 From: Chang lue Tsen Date: Fri, 17 Oct 2025 11:20:16 -0400 Subject: [PATCH] fix(user): modify SQL migration scripts to add columns only if they do not exist --- initialize/migrate/database/02115_ads.up.sql | 2 +- .../migrate/database/02116_user_algo.down.sql | 2 +- .../migrate/database/02116_user_algo.up.sql | 38 +++++++++++++++++-- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/initialize/migrate/database/02115_ads.up.sql b/initialize/migrate/database/02115_ads.up.sql index 341bc84..51778a5 100644 --- a/initialize/migrate/database/02115_ads.up.sql +++ b/initialize/migrate/database/02115_ads.up.sql @@ -1,2 +1,2 @@ ALTER TABLE `ads` - ADD COLUMN `description` VARCHAR(255) DEFAULT '' COMMENT 'Description'; + MODIFY COLUMN `description` VARCHAR(255) DEFAULT '' COMMENT 'Description'; diff --git a/initialize/migrate/database/02116_user_algo.down.sql b/initialize/migrate/database/02116_user_algo.down.sql index 51d4d33..41644c2 100644 --- a/initialize/migrate/database/02116_user_algo.down.sql +++ b/initialize/migrate/database/02116_user_algo.down.sql @@ -1,3 +1,3 @@ -ALTER TABLE `User` +ALTER TABLE `user` DROP COLUMN `algo`, DROP COLUMN `salt`; diff --git a/initialize/migrate/database/02116_user_algo.up.sql b/initialize/migrate/database/02116_user_algo.up.sql index ba3ee17..9d8121b 100644 --- a/initialize/migrate/database/02116_user_algo.up.sql +++ b/initialize/migrate/database/02116_user_algo.up.sql @@ -1,3 +1,35 @@ -ALTER TABLE `User` - ADD COLUMN IF NOT EXISTS `algo` VARCHAR(20) NOT NULL DEFAULT 'default' COMMENT 'Encryption Algorithm' AFTER `password`, - ADD COLUMN IF NOT EXISTS `salt` VARCHAR(20) NOT NULL DEFAULT 'default' COMMENT 'Password Salt' AFTER `algo`; +-- 添加 algo 列(如果不存在) +SET @dbname = DATABASE(); +SET @tablename = 'user'; +SET @colname = 'algo'; +SET @sql = ( + SELECT IF( + COUNT(*) = 0, + 'ALTER TABLE `user` ADD COLUMN `algo` VARCHAR(20) NOT NULL DEFAULT ''default'' COMMENT ''Encryption Algorithm'' AFTER `password`;', + 'SELECT "Column `algo` already exists";' + ) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @dbname + AND TABLE_NAME = @tablename + AND COLUMN_NAME = @colname +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- 添加 salt 列(如果不存在) +SET @colname = 'salt'; +SET @sql = ( + SELECT IF( + COUNT(*) = 0, + 'ALTER TABLE `User` ADD COLUMN `salt` VARCHAR(20) NOT NULL DEFAULT ''default'' COMMENT ''Password Salt'' AFTER `algo`;', + 'SELECT "Column `salt` already exists";' + ) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @dbname + AND TABLE_NAME = @tablename + AND COLUMN_NAME = @colname +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt;