【发布时间】:2017-10-17 20:46:08
【问题描述】:
我最初在创建数据库时进行了迁移,一切正常。然后我去手动删除了postgresql中的表。现在,当我运行 rake db:migrate 时,它会运行但不会创建表。
【问题讨论】:
-
是的,因为这些迁移已经执行,所以它不会工作。 Rails 只会执行那些以前没有执行过的。唯一的方法是回滚并再次运行迁移。
标签: ruby-on-rails
我最初在创建数据库时进行了迁移,一切正常。然后我去手动删除了postgresql中的表。现在,当我运行 rake db:migrate 时,它会运行但不会创建表。
【问题讨论】:
标签: ruby-on-rails
这取决于您的迁移做什么。 rake db:migrate 可以根据您的定义创建或更改表。要在开始时设置数据库和表,您可以使用rake db:schema:load 或rake db:setup。 rake -T 概述了所有可用的 rake 任务。
数据库迁移存储在表schema_migrations 中,该表有一列version。只要可以在此处找到相关迁移的版本,就不会再次执行迁移。
【讨论】:
schema_migrations 可能已经包含版本。我已经相应地更新了答案。