Rails – 使用现有数据库,无法在不丢失数据的情况下运行迁移

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

为了让这个工作起作用,我遵循了Joel Berghoff 博客 (针对MySQL)中列出的步骤:

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

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

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

迁移应该用于创建和更改表和字段,而不是加载数据,如此处可以看到Ruby on Rails指南

如果你想导入数据,你可以在种子上进行,但在你的具体情况下,我认为你应该从你的原始数据库创建一个转储并将其加载到目标数据库。

这是一个教程sqlite3:如何从/向文件导入/导出数据

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

查看ActiveRecord迁移。

这是ActiveRecord Migrations的rails doc: http : //guides.rubyonrails.org/migrations.html