// 容器启动时执行:按顺序应用 drizzle/ 下尚未执行的迁移 // 仅依赖生产 node_modules 中的 drizzle-orm 与 mysql2(standalone 产物自带) import { drizzle } from "drizzle-orm/mysql2"; import { migrate } from "drizzle-orm/mysql2/migrator"; import mysql from "mysql2/promise"; const url = process.env.DATABASE_URL; if (!url) { console.error("缺少 DATABASE_URL 环境变量"); process.exit(1); } const connection = await mysql.createConnection(url); try { // xuchao: 容器内固定 /app/drizzle;本地测试可用 MIGRATIONS_DIR 覆盖 await migrate(drizzle(connection), { migrationsFolder: process.env.MIGRATIONS_DIR || "/app/drizzle" }); console.log("数据库迁移完成"); } finally { await connection.end(); }