在我无尽的愚蠢中,我使用mysql更改了mysql数据库而不是迁移,因此现在db与迁移不同步。从更改分区重新创建schema.db
我的问题是,如果可以生成缺少的迁移(步骤)和新的schema.db而不丢失数据和db中的更改*
*更改如添加表格,列。
THX
在我无尽的愚蠢中,我使用mysql更改了mysql数据库而不是迁移,因此现在db与迁移不同步。从更改分区重新创建schema.db
我的问题是,如果可以生成缺少的迁移(步骤)和新的schema.db而不丢失数据和db中的更改*
*更改如添加表格,列。
THX
至于重建的迁移,你的运气,但如果你走这条路线,你可以重新创建模式
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
。数据库模式中的任何更改都必须通过迁移自动进行。
耙db:schema:load
的问题是它会强制创建表。
是的,但这会导致表数据的完全丢失,对不对? – user1980779
是的,它只会从头开始创建表格,但不会创建数据。所以另一种方法是首先将数据导出到某个地方,然后重置,以便稍后再次加载它。 –
谢谢,它现在适用于我.. – user1980779