TypeORM CLI:未发现数据库架构发生变化

Dio*_*ski 22 migration typeorm nestjs

我正在使用 NestJS 和 TypeORM 开发应用程序。每当我尝试从我的实体生成迁移(通过运行typeorm migration:generate)时,我都会收到以下消息:

No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command
Run Code Online (Sandbox Code Playgroud)

我什至删除了所有现有的迁移文件(从迁移文件夹中)以排除任何冲突的可能性。

在我将应用程序的模块文件夹结构更改为:

src
 |- config
 |   |- database
 |       |- mysql
 |           |- cli-configuration.ts
 |- migrations
 |- module1
     |- controller
     |- entity
     |- service
Run Code Online (Sandbox Code Playgroud)

可以看出,migrations文件夹就在下面src,每个模块都有一个entity文件夹,其中放置了该模块的实体。所有 ormconfig 设置都来自cli-configuration.ts文件。

package.json文件中,我添加了以下内容scripts

{
  ...
  "scripts": {
    ...
    "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js --config src/config/database/mysql/cli-configuration.ts",
    "typeorm:migrate": "npm run typeorm migration:generate -- -n",
    "typeorm:run": "npm run typeorm migration:run"
  }
}
Run Code Online (Sandbox Code Playgroud)

src/config/database/mysql/cli-configuration.ts文件内容为:

No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command
Run Code Online (Sandbox Code Playgroud)

运行console.log(config)我得到:

{
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'root',
  password: 'root',
  database: 'myapp',
  entities: [ '/var/www/html/myapp/src/**/*.entity{.ts,.js}' ],
  synchronize: false,
  migrationsRun: true,
  logging: 'all',
  migrations: [ '/var/www/html/myapp/src/migrations/**/*{.ts,.js}' ],
  cli: { migrationsDir: '/var/www/html/myapp/src/migrations' },
  dropSchema: false
}
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的......在这个问题上花费了几个小时(对迁移和实体路径进行更改,除了从 process.env 获取它们之外的硬编码值等)之后,我尝试执行yarn run typeorm schema:log(也npm run可以工作)。当我看到我想要生成的迁移文件中的所有内容都输出到控制台时,我感到很惊讶。

src
 |- config
 |   |- database
 |       |- mysql
 |           |- cli-configuration.ts
 |- migrations
 |- module1
     |- controller
     |- entity
     |- service
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么schema:log检测我的实体中的变化,但migration:generate不起作用?

小智 -8

问题是migration:generate由于某种原因没有被执行。package.json尝试更改您的 脚本"migration:create": "npm run typeorm migration:create -n"