数据库迁移
目录:db/migrations/。按文件名数字顺序在业务库执行。它们是增量脚本,可部分 IF NOT EXISTS,但 001、005、007 会改写投票数据。
| 文件 | 作用 |
|---|---|
001_user_system.sql | 用户部门/职位;历史多行选票合并;(campaign, voter) 唯一;曾引入后来已删的权重表 |
002_campaign_rule_weights.sql | 本场部门+职位票数 |
003_drop_voter_ballot_weights.sql | 删除按用户票数表 |
004_drop_position_vote_defaults.sql | 删除职位默认票数表 |
005_campaign_candidate_options.sql | 候选人名簿 |
006_drop_ballots_redundant_columns.sql | 清理 ballots 冗余列 |
007_ballot_allocations.sql | 分票表;从旧「整票给一人」回填后丢掉 ballots.candidate_option_id |
执行注意
- 生产先备份。
- 不要改已经在生产跑过的历史文件;新变更继续
008_...sql。 - 新脚本尽量可重复执行,或在文件头写明一次性操作。
- 改列名后用全文搜索确认
app/与lib/中的 SQL 字符串。
全新数据库
没有仓库内 bootstrap。需要一份已含 Auth.js 表与早期业务表的备份,再补跑上述迁移。