跳至主内容区

迁移是如何工作的?

非官方测试版翻译

本页面由 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查询的机制, 称为"迁移"。