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

时间:2014-08-02 01:03:42

标签: ruby-on-rails database sqlite

我是使用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”播种数据库,但是我现有的数据库非常大 - 几乎是1mm的记录,当我在我放弃之前尝试了这个(尽管是笨拙的方式)它跑了3个多小时。任何关于如何进行的指导都非常感谢!

3 个答案:

答案 0 :(得分:1)

迁移应该用于创建和更改表格和字段,而不是加载数据,如您在此处所见Ruby on Rails Guides

如果要导入数据,可以在种子上进行,但在特定情况下,我认为您应该从原始数据库创建转储并将其加载到目标数据库。

这是一个教程sqlite3: how to import/export data from/to a file

答案 1 :(得分:0)

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

答案 2 :(得分:0)

了解ActiveRecord迁移。

以下是ActiveRecord Migrations上的rails doc:http://guides.rubyonrails.org/migrations.html