NestJS、PortsgreSQL 和 TypeORM - 迁移运行不正常

Posted

技术标签:

【中文标题】NestJS、PortsgreSQL 和 TypeORM - 迁移运行不正常【英文标题】:NestJS, PortsgreSQL and TypeORM - Migrations not running properly 【发布时间】:2020-12-14 10:49:41 【问题描述】:

当尝试运行 TypeORM 迁移时,无论是在应用程序启动时自动运行还是通过 TypeORM CLI 手动运行,都只会创建迁移表(并且它保持为空)。迁移文件本身没有被执行。

这是我的 tsconfig.json


  "compilerOptions": 
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true
  

这是我的 package.json

...
"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js",
...

这是我的 ormconfig.json

...
"entities": ["dist/**/*.entity.ts,.js"],
"synchronize": true,
"migrationsRun": true,
"migrations ": ["dist/migrations/*.ts,.js"],
"cli": 
    "migrationsDir": "src/migrations"
  
...

迁移文件正在通过 TypeORM CLI 创建,它们将填充一些表(插入语句)。它们与数据库架构的更改无关。

拜托,谁能帮我完成它?

【问题讨论】:

运行这个命令npx typeorm migration:run 我试过了,但唯一发生的是迁移表已创建(如果尚未创建)。就好像我用插入语句创建的迁移文件没有找到一样。我检查了"migrations": ["dist/migrations/*.ts,.js"],文件(.ts 和 .js)都在那里。 【参考方案1】:

这是一个愚蠢的! 我想有时候最简单的问题是最难发现的。

问题出在ormconfig.json 文件中。 我删除了这个空白空间 ("migrations ":),一切正常。

【讨论】:

【参考方案2】:

你应该已经同步到 false synchronize:false

然后从终端运行

npx typeorm migration:generate -n AnyNameYouWant

之后就可以运行了

npx typeorm migration:run

在运行这些命令之前,您可能还必须运行 nest build

【讨论】:

我忘了说我创建的迁移文件是为了填充一些表(插入语句)。它们与数据库架构的更改无关...我将使用此信息编辑问题。我试过synchronize:false,但结果是一样的。

以上是关于NestJS、PortsgreSQL 和 TypeORM - 迁移运行不正常的主要内容,如果未能解决你的问题,请参考以下文章

NestJS 使用 ConfigService 和 TypeOrmModule

使用@nestjs/graphql 使用@ResolveProperty 和@Resolvers 创建嵌套查询

NestJs Swagger:如何为动态类定义 Api 属性

将 TypeORM 实体模型类与 NestJS-GraphQL 模式类型结合使用好吗?

NestJS 填充仅填充第一个元素

NestJs连接MySql:错误无法连接数据库