如何将数据从生产数据库迁移到开发数据库(Rails 4)?

时间:2014-07-22 14:45:02

标签: mysql ruby-on-rails rake rails-activerecord rails-migrations

我知道这听起来有些倒退!我一直在研究基于云的案例管理应用程序,并且正在开发支持票务功能。我们的开发数据库(MySQL)具有与我们的生产数据库(它是一个非常大的应用程序)相同的数据。开发基本上是一个“沙箱”环境,因此开发数据库与生产数据库完全相同。今天早上,我在本地开发服务器中遇到了一个问题:

Migrations are pending; run 'bin/rake db:migrate RAILS_ENV=development' to resolve this issue.

好吧,那样做,即使它没有任何意义。它错了,因为它试图创建已经存在的表(我已经运行了我的迁移,这些功能在一天前完成了!一切都运行得很好)。

在我的开发服务器中收到此消息之前,我唯一做的就是取消注释一个完全注释掉的文件来尝试修复TinyMCE(/config/tinymce.yml,文本编辑器)的问题,然后是重启我的rails dev服务器。所有这个文件都是一堆默认和插件。当我看到问题时,我首先将它们全部退回来。还是一样的错误。继续使用rake db:tasks。

开始寻找答案..不断收到错误。犯了一个noob错误,最终做了一个

rake db:migrate:reset 

我知道会以管理数据库的方式重建模式。这失败了..但是我们确实在不止一个地方安装了数据库(因为它与生产相同。)另外,只是为了尝试将所有表格带回来:

rake db:schema:load

....无论如何都在其中一个表上失败

ActiveRecord::StatementInvalid: Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE UNIQUE INDEX `login` USING btree ON `users` (`login`, `intranet_id`)

..并且所有表都是空的(如预期的那样)已成功创建。我绝不是一个数据库专家(我没有开发很长时间)。我想知道,有没有办法将整个生产数据库复制到devel数据库?表,数据和所有。还是其他任何建议?真的迷失了这个。

1 个答案:

答案 0 :(得分:1)

您可以使用mysql_dump

如果您连接到数据库,那么一切都在那里 - 您只需要转储完整数据库,然后再次将转储转移到生产表中。

您清楚地看到可以使用“>”从数据库输出并且您可以使用“<”进行导入。