[英]NPM TypeORM - "Error: Duplicate migrations" after modifying/deleting migration file
我之前使用npm run migration:generate <filename>
将一列添加到现有表中。
但是,后来我意识到我拼错了列名,所以我想重命名该列。 (showCommission -> showCommission)
由于只是在本地环境中,我修改了迁移文件上的列名称并运行npm run migration:run
。
发生重复迁移错误,这是日志。
**addShowCommissionToCorporationProfile1643792138368 是修改后的出口 class 名称。
类型迁移:运行
查询:SELECT * FROM
INFORMATION_SCHEMA
。COLUMNS
= 'abc' ANDTABLE_SCHEMA
= 'migrations' 的TABLE_NAME
查询:SELECT * 来自
abc
。migrations
migrations
ORDER BYid
DESC迁移运行期间出错:
错误:重复迁移:addShowCommissionToCorporationProfile1643792138368at MigrationExecutor.checkForDuplicateMigrations at MigrationExecutor.getMigrations at MigrationExecutor.<anonymous> at step at Object.next at fulfilled at processTicksAndRejections npm ERR. code ELIFECYCLE npm ERR. errno 1 npm ERR: abc-api@1:0:0 migration:run: `typeorm migration:run`
npm 错误。 退出状态 1 npm ERR。 npm 错误:abc-api@1.0.0 migration.run 脚本失败。 npm 错误! 这可能不是 npm 的问题。 上面可能还有其他日志记录 output。
之后我尝试恢复npm run migration:revert
,但发生了完全相同的错误。 因此,我将迁移文件改回其初始的 state 并使用npm run migration:generate --filename
来创建迁移文件以重命名该列,但仍然出现相同的错误。 最后,我删除了新建的迁移文件,只运行原来的迁移文件(初始状态),再次运行迁移,还是出现同样的错误。
谁能告诉我如何解决这个问题?
我只是想重命名该列...
如果您需要任何其他信息或有关情况的更多说明,请告诉我。
感谢您的所有帮助。
我执行 npm 运行构建并解决了问题。
我在 NestJS 项目中遇到了同样的错误。 我的解决方案是删除 dist 文件夹,然后重建项目,然后我可以运行新的迁移。
说明:我们最近刚刚更改了项目结构,并将迁移移动到不同的文件夹。 但是,Nest 有一个奇怪的“错误”:当我们移动文件时,它会重建我们移动文件的项目部分,但不一定重建我们删除文件的项目部分。 因此在这种情况下重复迁移。 当我们重建整个东西时,构建中不再有重复的迁移。
我遇到了类似的问题,并且对在这个问题上缺乏谷歌结果感到惊讶。
我也将它用于 NestJS 应用程序,但删除dist
文件夹并再次运行构建(如其他答案中的建议)没有帮助。
原来的原因是我在迁移文件夹中使用了一个索引文件,除了迁移文件本身之外,它还导出了迁移。 因此,当 TypeORM 扫描项目以进行迁移时(如果您为迁移文件提供正则表达式),它会导入两次——从迁移本身和索引文件。
因此,对于这样的情况,您有 2 个选择:
index.ts
migrations
选项的值更改为使用path/to/migrations/index.{ts,js}
而不是文件名中带有*
的正则表达式。 在这种情况下,您还需要确保将新的迁移添加到索引文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.