迁移是如何工作的?
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告 问题 →
当应用进入生产环境后,需要将模型变更同步到数据库。
通常,数据库中已有数据的情况下,在生产环境使用synchronize: true进行模式同步是不安全的。
这时就需要迁移功能来解决问题。
迁移就是包含SQL查询的独立文件, 用于更新数据库模式并将新变更应用到现有数据库。
假设你已有数据库和一个Post实体:
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number
@Column()
title: string
@Column()
text: string
}
该实体已在生产环境稳定运行数月未作修改, 数据库中存储了数千条帖子。
现在需要发布新版本,将title字段重命名为name,
该如何操作?
你需要创建包含以下SQL查询的新迁移(PostgreSQL方言):
ALTER TABLE "post" RENAME COLUMN "title" TO "name";
执行此SQL查询后,数据库模式即可适配新代码库。 TypeORM提供了专门编写和执行此类SQL查询的机制, 称为"迁移"。