我知道这听起来有些倒退!我一直在研究基于云的案例管理应用程序,并且正在开发支持票务功能。我们的开发数据库(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数据库?表,数据和所有。还是其他任何建议?真的迷失了这个。
答案 0 :(得分:1)
您可以使用mysql_dump。
如果您连接到数据库,那么一切都在那里 - 您只需要转储完整数据库,然后再次将转储转移到生产表中。
您清楚地看到可以使用“>”从数据库输出并且您可以使用“<”进行导入。