【问题标题】:Sequelize: How to undo migrations for dropped tables?Sequelize:如何撤消删除表的迁移?
【发布时间】:2018-12-12 15:05:15
【问题描述】:

在我的 Express Sequelize Postgres 应用程序中,我创建了一个迁移以创建具有一些属性的模型/表。

迁移后(状态:up),我删除了表。

现在我无法撤消迁移 - 迁移文件存在,但我收到以下错误:

ERROR: relation "public.CustomerAddresses" does not exist

如何撤消迁移,以便重新迁移?

【问题讨论】:

  • 你为什么丢了桌子?如果您使用迁移,则永远不应该修改您的数据库结构(并且您应该始终使用迁移)。在任何情况下,您都可以手动重新创建表(撤消手动运行的“删除表”),然后反向迁移。
  • 我在使用 db.sync 后引入了迁移,并想从迁移开始。

标签: express heroku sequelize.js


【解决方案1】:

这里有两种可能的选择:

  1. 作为mentioned,您可以通过手动重新创建表来撤消手动删除。只要该表存在,您就可以撤消迁移。
  2. 您可以从迁移表中删除迁移条目,以使架构的状态与迁移表的状态匹配,因为您已经手动执行了删除:

    DELETE FROM "SequelizeMeta" WHERE name='<your migration name>';
    

【讨论】:

  • 选项 2 在某些情况下可能有效(例如,如果表创建是在单个迁​​移中完成的,并且该迁移没有做任何其他事情,并且该表后来没有在另一个迁移中修改,这是最近的迁移)。选项 1 是一个更通用的解决方案,每次都应该有效,假设我们只是试图撤消删除的表。
猜你喜欢
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2017-06-26
  • 2011-04-30
  • 1970-01-01
  • 2018-06-22
相关资源
最近更新 更多