chore(开发环境): 本机库改成靠迁移自举,db:migrate 换成线上同一个执行器

compose.dev.yml 不再把 schema dump 挂成 initdb:0000 就是完整的建表迁移,
起完库 bun run db:migrate 从 0000 自举即可。实测两条路子跑出来的结构一致 ——
空库自举 16 条迁移 vs 灌 dump + 打基线 + 跑迁移,pg_dump --schema-only
逐行零差异(1981 行)。docs/specs/schema.sql 与 sample-data.sql 随之删掉,
前者的内容已经在 0000_crazy_gateway.sql 里。

db:migrate 原来是 drizzle-kit migrate,和线上 oj2-api migrate 不是同一个
执行器:drizzle 那个所有迁移共用一个事务、跑不了 CREATE INDEX CONCURRENTLY,
对已打基线的库还会从 0000 撞表回滚且 exit 1 不打印任何错误。现在两边都走
db/migrate.ts。DATABASE_URL 从根目录 .env 读(--env-file),仓库里不留连接串。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-16 08:03:40 -06:00
parent a8408c0bb5
commit 6fdc3c588e
4 changed files with 10 additions and 2422 deletions

View File

@@ -1,19 +0,0 @@
-- 阶段 1 本地题目样本导入脚本。
--
-- /tmp/problems.csv 从生产库 problem 表导出,只取 contest_id IS NULL、按 id
-- 排序的前 20 道题,避免为本地列表验收额外复制比赛数据。
-- /tmp/tags.csv 从生产库 problem_tag 表导出。两份 CSV 均不包含用户表数据,
-- 仅保留在本机并由 .gitignore 排除devadmin 只是满足外键的本地占位用户。
\set ON_ERROR_STOP on
BEGIN;
INSERT INTO "user" (id, password, username, admin_type, problem_permission, open_api, is_disabled, session_keys, raw_password)
VALUES (1, 'unusable', 'devadmin', 'Super Admin', 'All', false, false, '[]'::jsonb, 'devonly')
ON CONFLICT (id) DO NOTHING;
\copy problem_tag FROM '/tmp/tags.csv' WITH CSV HEADER
\copy problem FROM '/tmp/problems.csv' WITH CSV HEADER
COMMIT;

File diff suppressed because it is too large Load Diff