Ошибка «no database» в любых связанных с базой данных задачах rake - PullRequest
1 голос
/ 11 июня 2011

`postgresql_connection ': база данных не указана. Отсутствующий аргумент: база данных. (ArgumentError)

Я установил postgresql, используя Homebrew, и могу успешно подключиться из командной строки, используя мое локальное имя пользователя в качестве учетной записи posgresql. Однако я получаю вышеуказанную ошибку при запуске любых связанных с базой данных задач rake и не могу понять, почему.

Вот мой database.yml. https://gist.github.com/3177f1f6b90a69e3829a

Ответы [ 3 ]

3 голосов
/ 11 июня 2011

Не уверен, что это просто ошибка вставки, но отступ в кодировке, хосте, пуле и т. Д. После адаптера может вызвать проблемы. YAML распознает пробелы и предполагает, что они вложены в адаптер.

1 голос
/ 26 сентября 2011

Я столкнулся с этой проблемой и в проекте Rails 3.1. Сухой YML (как рекомендовано многими руководствами), который был бы отлично проанализирован до Rails 3.1, больше не действителен. Rails 3.1 переключил парсеры yml, например, с 'syck' на 'psych'.

Одним из последствий этого изменения - возможно, неизвестного изменения в Rails 3.1 - проверки базы данных database.yml - является то, что каноническая конфигурация рельсов DRY, которую использовал Эрик М., вызывает ошибку «Отсутствует аргумент: база данных», поскольку Настройка рассматривается как среда рельсов, и как таковая она не проходит проверку, поскольку она не содержит значения для базы данных. Вы можете вызвать ту же ошибку, создав любую произвольную среду, оставив поле базы данных и вуаля, проблемы с запуском rake db: version или любых чувствительных к базе данных команд.

Существует несколько возможных обходных путей (в порядке моих предпочтений):

  1. Очистите раздел настройки и используйте вашу среду разработки как модель для подстановки переменных, переопределяя поля, которые отличается для испытаний и производства. С этой настройкой у вас есть только рельсы среды ожидают, они все проверяют должным образом под нагрузкой с граблями, и вы все еще получаете довольно сухой настройки. https://gist.github.com/1242642
  2. Добавление фиктивной ссылки на базу данных к общим ссылкам существующая база данных https://gist.github.com/1242623, которая получит переопределяется любой конкретной базой данных: настройка в других ваших профилях. Это сделает «настройку» допустимой средой, хотя и следующей явно используется.
  3. Вернуть Rails 3.1 к старому механизму синтаксического анализа YAML. Я не проверял это, но некоторые записи в блоге утверждают, что это работает, хотя, конечно, неприятный побочный эффект заключается в том, что вы заставили Rails использовать более старый движок, который был отброшен, вероятно, по каким-то веским причинам. См., Например, Блог Batcode с ошибкой Rails 3.1 и обходной путь . Рекомендуемый шаг - установить YAML::ENGINE.yamler = "syck" в верхней части вашего application.rb. Возможно, вам сначала потребуется require 'yaml'.

Я использую первое решение в своем приложении на Rails 3.1 без проблем. Спасибо Эрику М. за поднятие этой проблемы (не уверен, что у вас было приложение на Rails 3.1 или просто несколько текстовых гремлинов, поскольку изменение порядка работало для вас, но не для меня).

0 голосов
/ 11 июня 2011

Есть несколько вещей, которые приходят на ум.

  1. Убедитесь, что гем 'pg' находится в вашем Gemfile
  2. Убедитесь, что вы запустили пакетную установку, и убедитесь, что гем pg действительно установлен
  3. Убедитесь, что база данных была создана с помощью rake db: create
  4. Войдите на pg и убедитесь, что база данных emorg_development существует

Может не быть абсолютным решением, но это поможет сузить источник проблемы.

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