【发布时间】:2017-05-19 13:00:25
【问题描述】:
过去 5 个月我一直在构建一个应用程序,我即将发布 Alpha 版。这段时间经历了很多变化,因此数据库中有很多剩余的表和列不再使用。
我的问题是,由于应用程序中没有数据,我可以只删除实际的迁移然后重置数据库而不是创建新的迁移来删除表和列吗?或者会有我不知道的缺点?
谢谢
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-5
过去 5 个月我一直在构建一个应用程序,我即将发布 Alpha 版。这段时间经历了很多变化,因此数据库中有很多剩余的表和列不再使用。
我的问题是,由于应用程序中没有数据,我可以只删除实际的迁移然后重置数据库而不是创建新的迁移来删除表和列吗?或者会有我不知道的缺点?
谢谢
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-5
来自migrations上的指南
移民,尽管可能很强大,但不是权威来源 为您的数据库架构。该角色属于 db/schema.rb 或 Active Record 通过检查数据库生成的 SQL 文件。他们 不是为编辑而设计的,它们只是代表当前状态 数据库。
没有必要(而且容易出错)部署一个新的 通过重播整个迁移历史记录的应用程序。它简单得多 并且更快地将当前的描述加载到数据库中 架构。
您似乎对迁移的角色有点误解,它们不应该再次运行来设置您的数据库,该角色是让schema.rb 填写命令
rake db:schema:load
我建议删除所有迁移,然后从数据库中删除您不想要的表和列,然后您可以运行
rake db:migrate
这将为您生成一个更新的schema.rb 文件,其中包含您想要的数据库版本。
【讨论】:
这些迁移的优点是:与多人一起编码 -> 易于设置开发环境和共享数据库。
您可以将您的应用程序推送到任何环境,您不必关心数据库的状态。移民会告诉你!
在您的情况下,这有点奇怪:您在一个项目上独自工作了 5 个月,但您从未想过清理未使用的表或列!!??我的建议是:写下(在纸上)你真正需要的表格和列,然后你有两个选择:
【讨论】: