database.yml & ссылки не работают - PullRequest
8 голосов
/ 26 мая 2011

Мы только что обновили наши виртуальные машины до того, что я считал идентичной конфигурацией 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 (я удалил его и снова запустил установку пакета, просто ради здравого смысла), все установленные зависимости одинаковы (то есть Gemfile.lock неразница между старой и новой установкой).Также не работает database.yml.

Ответы [ 2 ]

18 голосов
/ 26 мая 2011

Psych - это новый синтаксический анализатор YAML, который, предположительно, лучше, но не может объединять хеш-ключи

Это должно помочь http://pivotallabs.com/users/mkocher/blog/articles/1692-yaml-psych-and-ruby-1-9-2-p180-here-there-be-dragons

1 голос
/ 26 мая 2011

После того, как вы выполнили обновление, возможно, ваши полномочия базы данных испорчены.Попробуйте просмотреть, что у вас есть необходимые разрешения, т.е. у компьютера, на котором находится код, есть привилегии для подключения и изменения на компьютере базы данных.Глядя на ваш файл database.yml, он должен выглядеть примерно так: "GRANT ALL PRIVILEGES ON productionbd.* to 'user'@'<app-server-ip>' identified by 'pass';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...