database.yml和引用无效

我们刚刚将虚拟机升级到我认为相同的ruby配置(通过RVM …… Ruby 1.9.2,Rails 3.0.7,DataMapper 1.1.0)。 最大的区别是我们从MySQL 5.0到5.1。

出于某种原因,在我们的旧虚拟机上运行的完全相同的代码/ database.yml现在在我们尝试连接到数据库时的新代码上失败了。

问题是这个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", "encoding"=>"UTF-8", "username"=>"user", "password"=>"pass", "host"=>"localhost" }, "production" => { "adapter"=>"mysql", "encoding"=>"UTF-8", "username"=>"user", "password"=>"pass", "host"=>"localhost" } 

代替:

  "mysql_defaults" => { "adapter"=>"mysql", "encoding"=>"UTF-8", "username"=>"user", "password"=>"pass", "host"=>"localhost" }, "development" => { "adapter"=>"mysql", "encoding"=>"UTF-8", "username"=>"user", "password"=>"pass", "host"=>"localhost", "database"=>"devdb" }, "production" => { "adapter"=>"mysql", "encoding"=>"UTF-8", "username"=>"user", "password"=>"pass", "host"=>"master.db.site.com", "database"=>"productiondb" } 

以前有人经历过吗?

根据Gemfile.lock(我删除它并再次运行bundle install,只是为了理智),所有已安装的依赖项都是相同的(即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'@'' identified by 'pass';