在我无尽的愚蠢中,我使用mysql而不是迁移更改了mysql数据库,所以现在数据库与迁移不同步。
我的问题是,如果可以生成缺少的迁移(步骤)和新的schema.db而不丢失数据和数据库中的更改*?
*更改,例如添加表格,列。
THX
答案 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
的问题在于它会强制创建表。