![](/img/trans.png)
[英]typeORM No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command
[英]How to fix: No changes in database schema were found - cannot generate a migration?
我搜索了很多,有几个这样的问题,但其中大多数没有任何答案或与我无关。
我将 TypeORM(v0.2.45) 与 Postgres 驱动程序一起使用,并且我的实体/模式在启用synchronize
模式的情况下工作正常。
我的目标是从现有实体中反向生成迁移,但是它以某种方式失败了。
这是我在尝试生成迁移时得到的
❯ npm run migration:generate Coffee
> dri-mvp@0.0.1 migration:generate
> npm run build && npm run typeorm migration:generate -- -n "Coffee"
> dri-mvp@0.0.1 prebuild
> rimraf dist
> dri-mvp@0.0.1 build
> cross-env NODE_ENV=production nest build
> dri-mvp@0.0.1 typeorm
> cross-env NODE_ENV=production ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js --config dist/src/common/setup/config/orm.config.js "migration:generate" "-n" "Coffee"
No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command
这是我的 npm TypeORM 脚本
{
"typeorm": "cross-env NODE_ENV=production ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js --config dist/src/common/setup/config/orm.config.js",
"migration:generate": "npm run build && npm run typeorm migration:generate -- -n",
"migration:run": "npm run typeorm migration:run"
}
orm.config.ts
import { Env } from '../../env';
import { join } from 'path';
import { SnakeNamingStrategy } from 'typeorm-naming-strategies';
export default {
database: Env.isTest ? ':memory:' : process.env.DB_DATABASE || 'dri',
type: Env.isTest ? 'sqlite' : 'postgres',
port: Number(process.env.DB_PORT || 5432),
username: process.env.DB_USERNAME || 'dri-user',
password: process.env.DB_PASSWORD || 'dri-secret',
host: process.env.DB_HOST || '127.0.0.1',
...(!Env.isProd && {
synchronize: true,
synchronizeOptions: {
force: true,
},
}),
autoLoadEntities: true,
entities: [Env.isTest ? 'src/**/*.entity{.ts,.js}' : join(__dirname, './**/*.entity{.ts,.js}')],
keepConnectionAlive: true,
namingStrategy: new SnakeNamingStrategy(),
logging: Env.isDev ? 'all' : 'error',
migrations: [join(__dirname, './**/*.entity{.ts,.js}')],
cli: {
migrationsDir: 'migrations',
},
};
当我尝试创建迁移时 - 它可以工作,但我想从目前失败的现有模式生成它。
附言
我尝试了删除所有表格并将它们全部放置到位但结果是相同的 - 没有生成任何东西。
派对迟到了,但也许它会帮助别人。
TypeOrm 将您的实体架构与数据库架构进行比较以了解任何更改。 如果没有发现两者之间的变化,则不会创建新的迁移。 因为您使用的是sync: true
,所以您的数据库已经使用 orm 代码进行了更新,因此不会生成任何迁移。
要为每个表生成迁移,您需要一次删除一个表,运行生成命令,然后运行迁移。 对所有表重复。
尝试删除dist
文件夹,
重新运行npm run migration:generate Coffee
,或者你可以拆分npm run build
然后稍后生成迁移
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.