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

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

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

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

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

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

 rake db:migrate:reset 

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

 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数据库? 表,数据和所有。 还是其他任何建议? 真的迷失了这个。

你可以使用mysql_dump 。

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

如您清楚地看到可以使用“>”从数据库输出,您可以使用“<”导入。