首页 > 解决方案 > 从 DB 中丢失的 TypeORM 迁移条目,`migration:run` 重新运行它们,然后因“关系已存在”而失败

问题描述

我有一个带有 TypeORM dockerized 的 NestJS 应用程序。我已经synchronize关闭,而是使用迁移。在容器入口点,我做yarn typeorm migration:run. 它第一次运行良好,并根据日志将记录插入migrations表中。

我注意到,当我下次启动项目时,它经常尝试重新运行迁移并且由于“关系已经存在”而失败(如预期的那样)。此时,我可以通过 验证表中确实缺少migrations条目docker-compose exec db psql -U postgres -c 'SELECT * FROM "migrations" "migrations"。数据库架构是最新的。当我手动插入新记录时,它会在丢失记录后获得一个增量 ID。所以记录在某个时候就在那里。

我无法弄清楚是什么可能导致表中的条目migrations消失(回滚?)。这发生在上面链接的项目上。这是一个简单的示例项目。我没有意外命名为“迁移”的实体。:)

标签: postgresqlnestjsdatabase-migrationtypeorm

解决方案


作为一种解决方法migrations,我目前手动插入表中:

docker-compose exec db psql -U postgres -c "INSERT INTO migrations (timestamp, name) VALUES ('1619623728180', 'AddTable1619623728180');"

推荐阅读