avatar

林间有风

人类用沙想捏出梦里通天塔

  • 首页
  • AI
  • 前端
  • 客户端
  • 后端
主页 【nest】TypeORM数据库迁移脚本配置
文章

【nest】TypeORM数据库迁移脚本配置

发表于 9天前 更新于 9天前
作者 林间有风
9~12 分钟 阅读

一、安装必要依赖

pnpm install --save @nestjs/typeorm typeorm mysql2
pnpm install dotenv -D

二、创建配置文件

// src/config/typeorm.config.ts

import { config } from 'dotenv'
import { DataSource } from 'typeorm'

config()


const dataSource = new DataSource({
    type: 'mysql',
    host: process.env.DB_HOST || '127.0.0.1',
    port: parseInt(process.env.DB_PORT!, 10) || 3306,
    username: process.env.DB_USERNAME || 'root',
    password: process.env.DB_PASSWORD || '',
    database: process.env.DB_DATABASE || 'lin_db',
    entities: [],
    migrations: ['migrations/*.ts'], // 迁移文件路径
    migrationsTableName: 'lin_migrations', // 迁移记录表
    synchronize: false,
});

export default dataSource;

三、创建迁移脚本

迁移命令

// 创建脚本
"migration:create": "typeorm-ts-node-commonjs migration:create",
// 指行脚本
"migration:run": "typeorm-ts-node-commonjs migration:run -d ./src/config/typeorm.config.ts",
// 回滚脚本:回滚最近一次的记录
"migration:revert": "typeorm-ts-node-commonjs migration:revert -d ./src/config/typeorm.config.ts",
// 显示脚本执行情况
"migration:show": "typeorm-ts-node-commonjs migration:show -d ./src/config/typeorm.config.ts"

执行脚本

创建迁移脚本

pnpm run migration:create <path> :pnpm run migration:create migrations/init

执行如上脚本,会在根目录创建一个文件夹名为migrations ,并且在这个文件夹下会存在一个文件名为当前时间戳-init.ts的文件,如下所示,我们需要在这个文件内写迁移脚本:

import { MigrationInterface, QueryRunner } from 'typeorm';

export class Init1764684395382 implements MigrationInterface {
  // 执行脚本
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`create table user(
                id int primary key auto_increment,
                username varchar(255) not null unique,
                password varchar(255) not null,
                create_time timestamp not null default current_timestamp,
                update_time timestamp not null default current_timestamp on update current_timestamp,
            )`);
  }

  // 回滚脚本
  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`drop table user`);
  }
}

创建迁移脚本的另一种方法:

创建bash脚本bin/migration.sh :

#!/bin/bash

if [ -z "$1" ]; then
  echo "错误:请提供迁移文件名称"
  exit 1
fi

mkdir -p migrations

echo "正在创建迁移文件:$1"
pnpm run migration:create ./migrations/$1

echo "迁移文件创建完成!"

给bin/migration.sh脚本赋予执行权限:

chmod +x bin/migration.sh

执行命令bin/migration.sh <文件名> 创建迁移脚本

执行run命令

在创建完如上的迁移文件并且填充好了数据库执行命令之后,就可以执行pnpm run migration:run跑迁移脚本

执行revert命令

如果发现数据库迁移有问题,需要执行pnpm run migration:revert进行回滚

执行show命令

执行pnpm run migration:show命令可以查看执行迁移脚本的情况:

(base) liulin@liulindeMacBook-Pro lin-db-service % p migration:show

> lin-db-service@0.0.1 migration:show /Users/liulin/Desktop/lin-db-service
> typeorm-ts-node-commonjs migration:show -d ./src/config/typeorm.config.ts

[dotenv@17.2.3] injecting env (6) from .env -- tip: ⚙️  write to custom object with { processEnv: myObject }
[X] 2 Init1764684395382
[ ] User1764685303020

总结

经过如上命令,就可以实现TypeORM数据库迁移。

后端
mysql migration nest
许可协议:  CC BY 4.0
分享

相关文章

12月 5, 2025

【nest】nest+jest单元测试规范

版本:v1.0 适用范围:NestJS/nodejs企业后端项目 目标:提高可维护性、可测试性、系统稳定性 1. 测试总体要求 项目必须包含 Unit Test(单元测试)、E2E Test(端到端测试)。 必须使用 Jest 作为统一测试框架。 所有业务逻辑必须可测试、可 Mock。 合并进主分支

12月 2, 2025

【nest】TypeORM数据库迁移脚本配置

一、安装必要依赖 pnpm install --save @nestjs/typeorm typeorm mysql2 pnpm install dotenv -D 二、创建配置文件 // src/config/typeorm.config.ts import { config } from 'd

11月 15, 2025

【docker】开发环境部署

架构说明 查看当前docker运行架构:docker info | grep Architecture Architecture: x86_64:英特尔 / AMD PC 的主流架构,常用于Intel CPU(笔记本、台式机)、AMD Ryzen / EPYC(服务器)、大多数传统服务器。 Arch

下一篇

【Agent Prompt】nest项目

上一篇

【nest】nest+jest单元测试规范

最近更新

  • 【nest】nest+jest单元测试规范
  • 【nest】TypeORM数据库迁移脚本配置
  • 【Agent Prompt】nest项目
  • 【docker】开发环境部署
  • 【docker】镜像加速方案

热门标签

jest swift swift mysql docker nest migration flutter 单元测试 ios

目录

©2025 林间有风. 保留部分权利。

使用 Halo 主题 Chirpy