【发布时间】:2013-01-15 15:24:38
【问题描述】:
在我无尽的愚蠢中,我使用 mysql 而不是迁移更改了 mysql 数据库,所以现在数据库与迁移不同步。
我的问题是,是否可以生成缺少的迁移(步骤)和新的 schema.db 而不会丢失数据库中的数据和更改*?
*添加表格、列等变化。
谢谢
【问题讨论】:
标签: ruby-on-rails migration rails-migrations
在我无尽的愚蠢中,我使用 mysql 而不是迁移更改了 mysql 数据库,所以现在数据库与迁移不同步。
我的问题是,是否可以生成缺少的迁移(步骤)和新的 schema.db 而不会丢失数据库中的数据和更改*?
*添加表格、列等变化。
谢谢
【问题讨论】:
标签: ruby-on-rails migration rails-migrations
就重新创建迁移而言,您很不走运,但您可以重新创建架构
rake db:schema:dump
如果你走这条路,在创建新数据库时(用于新环境等),你会想要这样做
RAILS_ENV=some_env rake db:schema:load # specify the env if not development
而不是
rake db:migrate
因为您的迁移与当前架构不一致。
运行schema:load 时要小心,因为它会从头开始重新创建数据库。即您将丢失所有数据。
【讨论】:
创建缺少的迁移会很好。您可以通过手动将时间戳添加到schema_migrations 表来修复本地开发数据库。这就是手动更改架构的结果。
还要确保rake db:migrate:reset(删除所有表并从头开始迁移)将产生与rake db:schema:dump 相同的db/schema.rb。数据库架构中的任何更改都必须通过迁移自动执行。
rake db:schema:load 的问题是它会强制创建表。
【讨论】: