从更改的db重新创建schema.db

时间:2013-01-15 15:24:39

标签: ruby-on-rails migration rails-migrations

在我无尽的愚蠢中,我使用mysql而不是迁移更改了mysql数据库,所以现在数据库与迁移不同步。

我的问题是,如果可以生成缺少的迁移(步骤)和新的schema.db而不丢失数据和数据库中的更改*?

*更改,例如添加表格,列。

THX

2 个答案:

答案 0 :(得分:1)

就重新创建迁移而言,您运气不佳但可以重新创建架构

rake db:schema:dump

如果你走这条路线,在创建一个新的数据库(对于一个新的环境等......)时,你会想做

RAILS_ENV=some_env rake db:schema:load # specify the env if not development

而不是

rake db:migrate

因为您的迁移与当前架构不一致。

运行schema:load时要小心,因为它从头开始重新创建数据库。即你将丢失所有数据。

答案 1 :(得分:0)

最好创建缺少的迁移。您可以通过手动将时间戳添加到schema_migrations表来修复本地开发人员数据库。这是手动更改架构的结果。

同时确保rake db:migrate:reset(删除所有表并从头开始迁移)将产生与db/schema.rb相同的rake db:schema:dump。必须通过迁移自动更改数据库模式中的任何更改。

rake db:schema:load的问题在于它会强制创建表。