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 属性