database.yml&引用不起作用

问题描述

| 我们刚刚将虚拟机升级到我认为是相同的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\';