【问题标题】:re-creating schema.db from changed db从更改的数据库重新创建 schema.db
【发布时间】:2013-01-15 15:24:38
【问题描述】:

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

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

*添加表格、列等变化。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    rake db:schema:dump
    

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

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

    而不是

    rake db:migrate
    

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 是的,但这会导致表数据完全丢失,对吧?!
      • 是的,它只会从头开始创建表,而不是数据。因此,另一种方法是先将数据导出到某个地方,然后进行重置,以便稍后再次加载。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多