0

我已经在生产服务器上的数据库中有表,我通过运行创建了这些表

RAILS_ENV=production rake db:schema:load

现在我创建了更多迁移,并希望再次运行 db:schema:load 但它会删除现有表,因为我正在生产并且我确实有数据吗?我可以在我的 db/schema.rb 文件中看到,我有

create_table "authentications", :force => true do |t|

删除和创建表看起来非常危险,有没有其他方法可以做到这一点?我正在使用 postgresql

4

1 回答 1

2

是的,加载架构将删除所有数据。您可以简单地设置forcefalse在您的架构中,但是 postgresql 会给您一个错误,因为表已经存在并且架构不会被加载。

问题实际上是您要实现的目标。如果您有一些迁移,为什么不在生产环境中运行它们呢?

rake db:migrate RAILS_ENV=production

如果真的没有办法解决这个问题并且您的新架构仍然支持旧架构的数据,我建议您转储数据,加载架构,然后再次加载数据。为此,您可以使用yaml_db

于 2013-04-11T11:30:48.990 回答