【问题标题】:database.yml &references not workingdatabase.yml &references 不起作用
【发布时间】:2011-09-02 16:28:42
【问题描述】:

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

由于某种原因,在我们的旧虚拟机上运行的完全相同的 code/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 也没有。

【问题讨论】:

  • 当我在 irb 中(在同一台机器上)打开这个 yml 文件并用 YAML.load 解析它时,它解析得很好。不知道 Rails/DataMapper 发生了什么。
  • 您遇到了什么异常?

标签: ruby-on-rails ruby yaml datamapper


【解决方案1】:

由于您已完成升级,可能是您的数据库权限搞砸了。尝试查看您是否具有必要的权限,即代码所在的机器具有在数据库机器上连接和修改的权限。看着你的 database.yml,它应该类似于“ GRANT ALL PRIVILEGES ON productionbd.* to 'user'@'&lt;app-server-ip&gt;' identified by 'pass';

【讨论】:

    【解决方案2】:

    Psych 是新的 YAML 解析器,它可能更好,但不能合并散列键。

    这应该会有所帮助 http://pivotallabs.com/users/mkocher/blog/articles/1692-yaml-psych-and-ruby-1-9-2-p180-here-there-be-dragons

    【讨论】:

    • 哇,我已经将YAML::ENGINE.yamler = 'syck' 放在了我的application.rb 中,一切都很好。如果某些东西天生就被破坏了,他们到底在想什么呢?似乎他们实际上是在完全删除 syck,但两者听起来完全不相容:-\
    • 这种东西会让人很沮丧。啊! :)
    • 谢谢你,我刚才遇到了同样的问题,使用带有 Rails 3.2.6 和 ruby​​ 1.9.2-p180 的 MongoMapper。
    • 这已在 ruby​​ 1.9.2-p290 中修复。如果您卡在较旧的补丁级别,则可以使用 psych gem。请参阅已关闭的问题here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2016-02-29
    相关资源
    最近更新 更多