From e1d777e5aab38321012f27ab42f323ef6508ba8d Mon Sep 17 00:00:00 2001 From: wangdl Date: Sat, 20 Jun 2026 13:17:50 +0800 Subject: [PATCH] fix(migration): add missing FocusItem.source column from prisma db push drift - Column exists in Prisma schema + production but not in migration files - Idempotent: checks INFORMATION_SCHEMA before ALTER TABLE Co-Authored-By: Claude --- .../migration.sql | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 prisma/migrations/20260620000007_fix_focus_item_source_column/migration.sql diff --git a/prisma/migrations/20260620000007_fix_focus_item_source_column/migration.sql b/prisma/migrations/20260620000007_fix_focus_item_source_column/migration.sql new file mode 100644 index 0000000..3baa893 --- /dev/null +++ b/prisma/migrations/20260620000007_fix_focus_item_source_column/migration.sql @@ -0,0 +1,24 @@ +-- Fix: FocusItem.source 列通过 prisma db push 添加到生产但未在 migration 中记录 +-- 使用条件逻辑确保可重复执行(列可能已存在) +SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'FocusItem' AND COLUMN_NAME = 'source'); + +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE `FocusItem` ADD COLUMN `source` VARCHAR(32) NULL AFTER `status`', + 'SELECT "FocusItem.source already exists, skipping" AS info'); + +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- 同样条件添加 createdAt 索引 +SET @idx_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'FocusItem' AND INDEX_NAME = 'FocusItem_createdAt_idx'); + +SET @sql2 = IF(@idx_exists = 0, + 'ALTER TABLE `FocusItem` ADD INDEX `FocusItem_createdAt_idx` (`createdAt`)', + 'SELECT "FocusItem.createdAt_idx already exists, skipping" AS info'); + +PREPARE stmt2 FROM @sql2; +EXECUTE stmt2; +DEALLOCATE PREPARE stmt2;