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"
归档时间: |
|
查看次数: |
7085 次 |
最近记录: |