рейк дБ: мигрировать не удалось - PullRequest
3 голосов
/ 01 апреля 2012

Я только начал изучать Rails.При попытке "rake db: migrate" произошла следующая ошибка.

rake aborted!FATAL: Одноранговая аутентификация не удалась для пользователя "kt1"

, похоже, что-то не так с database.yml, но я не знаю, как решить.Пожалуйста, дайте мне совет.


Большое спасибо за ваш комментарий и редактирование.Я использую postgresql (0.13.2).Моя среда выглядит следующим образом.Ubuntu 11.10 Ruby 1.8.7 Rails 3.2.3 gem 1.8.21

database.yml, как показано ниже.


# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On Mac OS X with macports:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
development:
  adapter: postgresql
  encoding: unicode
  database: kt1_development
  pool: 5
  username: kt1
  password:

  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # The server defaults to notice.
  #min_messages: warning

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: postgresql
  encoding: unicode
  database: kt1_test
  pool: 5
  username: kt1
  password:

production:
  adapter: postgresql
  encoding: unicode
  database: kt1_production
  pool: 5
  username: kt1
  password:

Я также пробовал с именем пользователя в пустом.Тогда ошибка приходит к

rake aborted!
FATAL:  role "kenji" does not exist

(кендзи - мое имя пользователя в Ubuntu.)

Ответы [ 4 ]

9 голосов
/ 28 августа 2012

Попробуйте изменить файл (/etc/postgresql/9.1/main/) pg_hba.conf следующим образом, изменив метод для локальных пользователей с однорангового на доверительный.

# Database administrative login by UNIX sockets
local   all         postgres                          trust

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5
3 голосов
/ 01 апреля 2012

Сначала необходимо создать пользователя kt1, затем создать базу данных и дать пользователю разрешение на нее.

Существует способ позволить rails создавать пользователя и базу данных, но в postgresql лучше всего делать это вручную (IMHO)

0 голосов
/ 02 мая 2014

Это происходит, когда приложение изначально было создано с помощью sqlite, а затем портировано на Postgres для размещения на Heroku.

Запуск rake db: migrate was выдает следующую ошибку

PGError (FATAL: role "rails" does not exist ): error message.

И rspec spec / и rake cucumber не работают с похожими ошибками.

Кажется, что следующие шаги решают проблемы:

Создайте рельсы как суперпользователь: createuser -s rails (Примечание: если вы не настроили себя как суперпользователя БД, вам нужно будет указать другого пользователя БД, чтобы сделать это как. Для меня это был createuser -s rails -U postgres)

Создатьбаза данных с рельсами владельца, как указано в database.yml:

createdb -O rails kt1 (Как и в шаге 1, если вам нужно указать другого пользователя БД для этого, добавьте -U)

После этого rake db: migrate, rspec spec / и rake cucumber должны успешно работать.

0 голосов
/ 01 апреля 2012

посмотрите на ваш файл database.yml, там будет адаптер базы данных, возможно, имя базы данных, имя пользователя и пароль.

Адаптер сообщает вам, какую систему базы данных вы используете, sqllite3, mysql2,

Проверьте, можете ли вы вручную подключиться к этой системе базы данных, используя имя пользователя и пароль, которые содержатся в файле database.yml.Как только вы определите правильное имя пользователя и пароль для подключения вручную, обновите database.yml с любыми изменениями и попробуйте снова.

...