rake db: миграция не удалась

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

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

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


Большое спасибо за ваш комментарий и редактирование. Я использую postgresql (0.13.2). Моя среда выглядит следующим образом. Ubuntu 11.10 Ruby 1.8.7 Rails 3.2.3 драгоценный камень 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

(kenji — это мое имя пользователя в Ubuntu.)


person kenzy66    schedule 01.04.2012    source источник
comment
Не могли бы вы опубликовать свой database.yml? Блокирование любых конфиденциальных данных. Какой тип базы данных (MySQL, PostgreSQL и т. д.) вы пытаетесь использовать?   -  person Alex    schedule 01.04.2012


Ответы (4)


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

Есть способ разрешить rails создавать пользователя и базу данных, но в postgresql лучше сделать это вручную (ИМХО)

person Ben Miller    schedule 01.04.2012
comment
Спасибо, вы правы. Вчера вечером я попытался сделать то, что вы предложили, и сделал это. Это было нелегко, так как я очень новичок в postgresql, поэтому я перепробовал столько способов, сколько смог найти, и, наконец, мне это удалось. - person kenzy66; 03.04.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
person Dexter    schedule 28.08.2012
comment
Да, это сработает. Возможно, самое время также изучить все другие методы аутентификации Postgres. - person Adrien Lamothe; 18.12.2012
comment
Спасибо чувак! Я потратил несколько часов, борясь с этой проблемой. Ваш совет мне помог! - person AntonAL; 24.04.2013
comment
Обязательно запустите sudo service postgresql restart после внесения этого изменения, чтобы оно заработало! - person Kyle Krzeski; 14.07.2019

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

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

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

person RadBrad    schedule 01.04.2012

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

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

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

И rspec spec/, и rake огурец не работают с аналогичными ошибками.

Следующие шаги, похоже, решают проблемы:

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

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

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

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

person Kummo    schedule 02.05.2014