从Prisma迁移至Drizzle:如何标记迁移为已完成?
解决Drizzle标记初始introspect迁移为已完成的问题
因为你是从现有数据库introspect生成的迁移,本质上这些表已经存在,确实不需要执行这份迁移。可以通过以下步骤直接标记它为已完成:
手动写入迁移记录到__drizzle_migrations表
找到你生成的迁移文件(比如文件名是20240520123456_initial_introspect.ts):- 提取文件名里的时间戳部分作为
id(示例里就是20240520123456) - 找到文件里的
export const hash = "xxx"行,复制对应的哈希值 - 执行这条SQL语句(可以直接在数据库客户端运行,也通过Drizzle的
db.execute执行):INSERT INTO __drizzle_migrations (id, hash, created_at) VALUES ('你的迁移id', '迁移文件里的哈希值', NOW());
- 提取文件名里的时间戳部分作为
可选:清理无用迁移文件
把这份不需要执行的迁移文件从drizzle/migrations目录删除,避免后续执行migrate时产生混淆。验证结果
运行drizzle-kit migrate命令,此时应该会提示没有待执行的迁移,说明标记成功。
注意:必须保证插入的id和哈希值与迁移文件完全匹配,否则Drizzle仍会认为这是未执行的迁移。
内容的提问来源于stack exchange,提问作者Adam A
相关产品推荐
相关产品推荐

