Ruby on rails database.yml&;参考资料不起作用

Ruby on rails database.yml&;参考资料不起作用,ruby-on-rails,ruby,yaml,datamapper,Ruby On Rails,Ruby,Yaml,Datamapper,我们刚刚将虚拟机升级到我认为完全相同的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

我们刚刚将虚拟机升级到我认为完全相同的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",
    "database"=>"devdb"
  },
  "production" => {
    "adapter"=>"mysql",
    "encoding"=>"UTF-8",
    "username"=>"user",
    "password"=>"pass",
    "host"=>"master.db.site.com",
    "database"=>"productiondb"
  }
以前有人经历过吗


根据Gemfile.lock(我删除了它并再次运行了bundle安装,只是出于理智的考虑),所有安装的依赖项都是相同的(即Gemfile.lock在新旧安装之间没有区别)。database.yml.

Psych也是新的YAML解析器,它可能更好,但不能合并哈希键

这应该会有所帮助

由于您进行了升级,可能是您的数据库权限出了问题。尝试查看您是否具有必要的权限,即代码所在的计算机具有连接和修改数据库计算机的权限。看看你的数据库。yml应该是这样的“
在irb中打开此yml文件时(在同一台机器上),将productionbd.*上的所有权限授予由“pass”标识的“user”@;

然后用
YAML.load
解析它,解析很好。不知道Rails/DataMapper中发生了什么。你得到了什么异常?哇,我已经在我的application.rb中放置了
YAML::ENGINE.yamler='syck'
,一切都很好。他们到底在想什么,如果某个东西天生就坏了,他们会把它设为默认值?看起来像他们实际上完全删除了syck,但这两个版本听起来完全不兼容:-\n这类东西可能会让人很沮丧。啊!:)多亏了这一点,我刚才遇到了同样的问题,使用MongoMapper与Rails 3.2.6和ruby 1.9.2-p180配合使用。这在ruby 1.9.2-p290中得到了修复。如果你停留在较旧的补丁级别,你可以使用t他是精神宝石,看最后一期。
  "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"
  }