NestJs + Typeorm执行migration:generate提示schema已为最新无法生成迁移
TypeORM 迁移生成提示schema无变更解决方案
- 首先补全.env配置中缺失的实体扫描路径,这是最高发的问题:你当前的环境变量没有指定TypeORM需要扫描的实体文件位置,无法识别你对实体的改动,需要新增如下配置(根据你实际的实体存放路径调整匹配规则):
同时补全缺失的TYPEORM_ENTITIES=src/entities/*.tsTYPEORM_PORT配置,PostgreSQL默认端口为5432,空值可能导致连接到错误的数据库实例。 - 确认.env文件被正常加载:运行命令时如果没有自动加载.env配置,可以在命令中手动引入dotenv,修改后的运行命令如下:
执行命令的工作目录需要和.env文件所在的项目根目录保持一致。ts-node -r dotenv/config ./node_modules/typeorm/cli.js migration:generate -n new_changes - 校验迁移与数据库的同步状态:先执行如下命令查看现有迁移的执行情况:
如果存在未执行的迁移,先运行ts-node ./node_modules/typeorm/cli.js migration:showmigration:run完成迁移后再尝试生成新迁移,避免TypeORM对比基准出现偏差。 - 适配TypeORM版本的命令规则:如果你使用的是0.3.x及以上版本的TypeORM,旧版CLI命令已废弃,不再支持直接通过环境变量运行,需要先编写数据源配置文件,再使用对应版本的命令生成迁移,示例如下:
typeorm-ts-node-commonjs migration:generate src/migrations/new_changes -d src/data-source.ts - 排除手动改库的干扰:如果你之前手动修改过数据库表结构,需要先将手动修改的内容同步到实体定义中,或者回退数据库的手动改动,保证实体定义与当前数据库结构存在明确差异,TypeORM才会生成对应的迁移语句。
内容的提问来源于stack exchange,提问作者Tertius
相关产品推荐
相关产品推荐

