如果模式是稳定的,是否允许在Rails应用程序中删除(或存档)旧迁移文件?
我的迁移很多,我怀疑其中可能有一些问题,因为我偶尔会在Heroku上迁移数据库时遇到问题。
发布于 2013-11-21 11:19:28
您不需要在Rails应用程序中保留旧的迁移文件,因为您的数据库模式应该在schema.rb或一个可用于重新生成模式的等效SQL文件中捕获。
迁移不是数据库架构的权威来源。该角色由db/schema.rb或活动记录通过检查数据库生成的SQL文件承担。它们不是为编辑而设计的,它们只是表示数据库的当前状态。
不需要(而且容易出错)通过重播整个迁移历史来部署应用程序的新实例。将当前模式的描述加载到数据库中(这是在schema.rb或SQL文件中)要简单得多,也要快得多。
这个文件应该是版本化的,并保存在源代码管理中。
若要设置自动schema.rb生成,请通过config.active_record.schema_format
设置修改config.active_record.schema_format
/application.rb,该设置可能是:ruby :sql。如果选择了ruby,那么模式将存储在db/schema.rb中。如果选择了SQL,架构将以数据库的本机SQL格式转储。
发布于 2017-12-09 22:50:24
你可以删除你以前的迁移。完成此操作后,当您设置应用程序时,需要运行:
rake db:schema:load
而不是:
rake db:migrate
发布于 2019-04-26 14:30:39
下面是我所做的,我发现了在生产ActiveRecord::SchemaMigration.last.version
上迁移的最后一个版本,并在源代码中删除了之前的所有迁移。
这不是最好的方法,但我做了find db/migrate -type f
,复制了上一个版本之前的文件列表和pbpaste | rm
(macos)。
https://stackoverflow.com/questions/20119391
复制相似问题