【问题标题】:Rails -- working with an existing db, cannot run migrations without losing dataRails - 使用现有数据库,无法在不丢失数据的情况下运行迁移
【发布时间】:2014-08-02 01:03:41
【问题描述】:

我是一名使用 Rails 4.1 的初学者。我正在尝试在开发环境中将现有的 sqlite3 数据库与我的应用程序集成。

为了尝试使其正常工作,我已按照 Joel Berghoff 的blog(适用于 MySQL)中列出的步骤进行操作:

  • 引用 config/database.yml 中的 db
  • 运行“rake db:schema:dump”
  • 将 schema.rb 转换为 db/migrate/001_create_database.rb

我面临的问题是,每当我运行“rake db:migrate”时,整个数据库都会刷新,并且我会丢失所有预先填充的数据。我首先运行迁移解决了这个问题,然后用我的预填充副本替换了生成的空白数据库——这让我可以在 rails 控制台中使用我的模型并查看数据。但是,当我尝试在本地计算机上启动服务器时,我收到一条消息,指出迁移正在等待。

我不太确定在这里做什么...我已经读到我应该从“rake db:seed”播种数据库,但是我现有的数据库非常大——几乎 1 毫米的记录,当我尝试了这个(虽然很笨拙),但在我放弃之前它运行了 3 个多小时。非常感谢任何有关如何进行的指导!

【问题讨论】:

    标签: ruby-on-rails database sqlite


    【解决方案1】:

    应使用迁移来创建和更改表和字段,而不是加载数据,如您在此处看到的Ruby on Rails Guides

    如果您想导入数据,您可以在种子上执行此操作,但在您的具体情况下,在我看来,您应该从原始数据库创建转储并将其加载到目标数据库。

    这里有教程sqlite3: how to import/export data from/to a file

    【讨论】:

      【解决方案2】:

      sqllite3 和 MySQL 是不同的东西。我的猜测是你认为你连接到 sqllite db,但实际上你连接到一个空的 MySQL db。

      【讨论】:

        【解决方案3】:

        查看 ActiveRecord 迁移。

        这是关于 ActiveRecord 迁移的 Rails 文档:http://guides.rubyonrails.org/migrations.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-08
          • 2016-04-27
          • 1970-01-01
          • 2017-02-17
          • 1970-01-01
          • 2012-03-14
          相关资源
          最近更新 更多