diff --git a/database/sql/DEPLOY_CHECKLIST.md b/database/sql/DEPLOY_CHECKLIST.md index b01cc9e..0713221 100644 --- a/database/sql/DEPLOY_CHECKLIST.md +++ b/database/sql/DEPLOY_CHECKLIST.md @@ -23,11 +23,17 @@ DB_PASSWORD=$(grep ^DB_PASSWORD= .env | cut -d= -f2- | tr -d '\r"') # ۱ baseline mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" \ < database/sql/baseline_migrations.sql + + #mysql -h 127.0.0.1 -P 3030 -u root -p soroushgold < database/sql/baseline_migrations.sql + # باید ۱۱ ردیف چاپ شود (شامل 2019 و 2021) # ۲ چک DB — اگر کمتر از ۲ بود baseline قدیمی است mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" -N -e \ "SELECT COUNT(*) FROM migrations WHERE migration LIKE '2019%' OR migration LIKE '2021%';" + + #mysql -h "127.0.0.1" -P "3030" -u "root" -p"1ipqLRRMC7qS8s3WkuwXiS7P" "soroushgold" -N -e \"SELECT COUNT(*) FROM migrations WHERE migration LIKE '2019%' OR migration LIKE '2021%';" + # باید: 2 # ۳ status — ۱۰ تا همه Yes @@ -39,6 +45,8 @@ php artisan migrate # ۵ settings mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" \ < database/sql/deploy_settings_const.sql + + #mysql -h "127.0.0.1" -P "3030" -u "root" -p"1ipqLRRMC7qS8s3WkuwXiS7P" "soroushgold" \ < database/sql/deploy_settings_const.sql ``` **یا:** `bash database/sql/run_deploy_existing_db.sh` @@ -95,6 +103,7 @@ mysql ... < database/sql/deploy_settings_const.sql | `Loading stored database schema` | restore بکاپ → `baseline` قبل از `migrate` | | `2019`/`2021` No بعد از baseline | baseline قدیمی → `fake_package_migrations.sql` | | `Unknown host HOST` | از `.env` بخوان نه placeholder | +| `Unknown column 'is_exist'` | `git pull` + دوباره `deploy_settings_const.sql` (نسخه جدید ستون را اضافه می‌کند) | --- diff --git a/database/sql/deploy_settings_const.sql b/database/sql/deploy_settings_const.sql index cab4820..b884087 100644 --- a/database/sql/deploy_settings_const.sql +++ b/database/sql/deploy_settings_const.sql @@ -24,6 +24,30 @@ START TRANSACTION; SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; +SET @db = DATABASE(); + +-- ستون‌های اختیاری settings (بعضی DBهای قدیمی ندارند) +SET @sql = IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'settings' AND COLUMN_NAME = 'is_exist') = 0, + 'ALTER TABLE `settings` ADD COLUMN `is_exist` TINYINT(1) NOT NULL DEFAULT 0', + 'SELECT 1' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'settings' AND COLUMN_NAME = 'type') = 0, + IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'settings' AND COLUMN_NAME = 'description') > 0, + 'ALTER TABLE `settings` ADD COLUMN `type` VARCHAR(50) NULL DEFAULT NULL AFTER `description`', + 'ALTER TABLE `settings` ADD COLUMN `type` VARCHAR(50) NULL DEFAULT NULL' + ), + 'SELECT 1' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + -- --------------------------------------------------------------------------- -- charset — نمایش فارسی در پنل ادمین -- ---------------------------------------------------------------------------