From 9607c4f023beda9fd1e1d1dd0a779ff53ffb48b4 Mon Sep 17 00:00:00 2001 From: dsh Date: Wed, 19 Aug 2026 11:27:25 -0400 Subject: [PATCH] =?UTF-8?q?fix(migrate):=20=E7=9B=AE=E6=A0=87=E5=BA=93?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=20mailbox=5Fstates=20=E8=A1=A8=E6=97=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=BB=BA=E8=A1=A8=EF=BC=88=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E4=B8=8A=E6=B8=B8=E6=A8=A1=E5=9E=8B=E6=9C=AA=E5=90=AB=20Mailbo?= =?UTF-8?q?xState=20=E7=9A=84=E5=9C=BA=E6=99=AF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/migrate/main.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cmd/migrate/main.go b/cmd/migrate/main.go index d2419d2..73e3b48 100644 --- a/cmd/migrate/main.go +++ b/cmd/migrate/main.go @@ -183,6 +183,21 @@ func main() { var stateCount int64 sdb.Raw("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='mailbox_states'").Scan(&stateCount) if stateCount > 0 { + // 目标库若没有该表(上游模型未含 MailboxState 时 AutoMigrate 不会建),先建表 + var tcnt int64 + mdb.Raw("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'mailbox_states'").Scan(&tcnt) + if tcnt == 0 { + if err := mdb.Exec(`CREATE TABLE mailbox_states ( + user_id bigint unsigned NOT NULL, + folder varchar(64) NOT NULL, + uid_validity bigint unsigned NOT NULL, + created_at datetime(3) NULL, + updated_at datetime(3) NULL, + PRIMARY KEY (user_id, folder))`).Error; err != nil { + log.Fatalf("建 mailbox_states 表: %v", err) + } + log.Println("mailbox_states: 目标库已建表") + } srows, err := sdb.Raw("SELECT user_id, folder, uid_validity, created_at, updated_at FROM mailbox_states ORDER BY user_id, folder").Rows() if err != nil { log.Fatalf("读 mailbox_states: %v", err)