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'@'
- Ruby Datamapper .count始终返回0
- Sinatra + Heroku + Datamapper使用dm-sqlite-adapter部署问题
- 使用Postgresql在Datamapper中像(ilike)一样不区分大小写
- 如何使用DataMapper仅获取模型的指定字段?
- 使用dm-accepts_nested_attributes和dm-is-tree在rails中的2个模型的嵌套表单
- 难以在Sinatra中访问validation错误
- Windows上是否支持Datamapper的dm_mysql_adapter gem?
- 无法在Windows上加载此类文件 – do_sqlite3 / 2.0 / do_sqlite3
- 未定义的方法auto_upgrade! 将Sinatra / DataMapper应用程序推送到Heroku时