Skip to content

数据库迁移

配置数据库连接

参考文档

  • ./src/data-source.ts
ts
export const AppDataSource = new DataSource({
    type: "mysql",
    connectorPackage: "mysql2", // mysql8.0 用 mysql2 插件
    host: "127.0.0.1",
    port: 3306,
    username: "test",
    password: "test",
    database: "test",
    dropSchema: false, // 每次连接时删除数据表
    synchronize: false, // 每次连接时自动创建数据库架构,表和字段的创建应该使用迁移功能实现
    logging: true,
    logger: "file", // 日志记录到文件中
    entities: ['src/entity/*.ts'], // 路径要相对于执行命令所在目录
    migrations: ['src/migration/*.ts'], // 路径要相对于执行命令所在目录
    subscribers: []
})

创建迁移文件

sh
typeorm migration:create src/migration/create-test-table
# Migration D:\web-www\RuoYi-NodeJS\src\migration/1696836975501-create-test-table.ts has been generated successfully.

/src/migration/1696836975501-create-test-table.ts

ts
import { MigrationInterface, QueryRunner, Table } from "typeorm"

export class CreateTest1Table1696837012074 implements MigrationInterface {

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.createTable(
      new Table({
        name: "test",
        columns: [
          {
            name: "id",
            type: "int",
            isPrimary: true
          },
          {
            name: "name",
            type: "varchar"
          }
        ]
      }),
      true
    );
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
  }

}

执行迁移文件

sh
pnpm run typeorm migration:run -d .\src\data-source.ts