问题描述
|
我们刚刚将虚拟机升级到我认为是相同的ruby配置(通过RVM ... Ruby 1.9.2,Rails 3.0.7,DataMapper 1.1.0)。最大的不同是我们从MySQL 5.0升级到5.1。
由于某些原因,在旧VM上运行的完全相同的code / database.yml现在在尝试连接到数据库时在新VM上失败。
问题在于此YAML:
mysql_defaults: &mysql_defaults
adapter: mysql
encoding: UTF-8
username: user
password: pass
host: localhost
development:
<<: *mysql_defaults
database: devdb
production:
<<: *mysql_defaults
database: productiondb
host: master.db.site.com
只是扩展到:
\"mysql_defaults\" => {
\"adapter\"=>\"mysql\",\"encoding\"=>\"UTF-8\",\"username\"=>\"user\",\"password\"=>\"pass\",\"host\"=>\"localhost\"
},\"development\" => {
\"adapter\"=>\"mysql\",\"production\" => {
\"adapter\"=>\"mysql\",\"host\"=>\"localhost\"
}
代替:
\"mysql_defaults\" => {
\"adapter\"=>\"mysql\",\"host\"=>\"localhost\",\"database\"=>\"devdb\"
},\"host\"=>\"master.db.site.com\",\"database\"=>\"productiondb\"
}
有人经历过吗?
根据Gemfile.lock(出于完整性考虑,我删除了它,然后再次运行捆绑安装),所有已安装的依赖项都是相同的(即,Gemfile.lock在新旧设置之间没有区别)。 database.yml也没有。
解决方法
Psych是新的YAML解析器,它可能更好,但不能合并哈希键。
这应该有帮助
http://pivotallabs.com/users/mkocher/blog/articles/1692-yaml-psych-and-ruby-1-9-2-p180-here-there-be-dragons
,既然您已完成升级,则可能是数据库权限混乱了。尝试查看您是否具有必要的权限,即代码所在的计算机具有在数据库计算机上进行连接和修改的特权。看着你的database.yml应该是\“
GRANT ALL PRIVILEGES ON productionbd.* to \'user\'@\'<app-server-ip>\' identified by \'pass\';