1

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

我的问题是,是否可以在不丢失数据和数据库中的更改*的情况下生成丢失的迁移(步骤)和新的 schema.db?

*添加表格、列等更改。

谢谢

4

2 回答 2

1

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

rake db:schema:dump

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

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

代替

rake db:migrate

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

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

于 2013-01-15T15:29:06.100 回答
0

创建丢失的迁移会很好。schema_migrations您可以通过手动将时间戳添加到表中来修复本地开发数据库。这就是手动更改架构的结果。

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

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

于 2013-01-15T15:33:16.927 回答