繁体   English   中英

NPM TypeORM - 修改/删除迁移文件后出现“错误:重复迁移”

[英]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' AND TABLE_SCHEMA = 'migrations' 的TABLE_NAME

查询:SELECT * 来自abc migrations migrations ORDER BY id DESC

迁移运行期间出错:
错误:重复迁移:addShowCommissionToCorporationProfile1643792138368

 at 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
  • 将 DataSource 的migrations选项的值更改为使用path/to/migrations/index.{ts,js}而不是文件名中带有*的正则表达式。 在这种情况下,您还需要确保将新的迁移添加到索引文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM