2012-04-01 2 views
2

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

rake aborted! FATAL: аутентификация Peer Сбой пользователя «КТ1»

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


Благодарим вас за комментарий и изменение. Я использую postgresql (0.13.2). Моя среда выглядит следующим образом. Ubuntu 11,10 Рубин 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.)

+0

Не могли бы вы разместить свой 'database.yml'? Блокирование любых конфиденциальных данных. Какой тип базы данных (MySQL, PostgreSQL и т. Д.) Вы пытаетесь использовать? – Alex

ответ

3

Вам необходимо сначала create the user kt1, затем create the database и предоставить пользователю разрешение на это.

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

+0

Спасибо, ты прав. Вчера вечером я попытался сделать то, что вы предложили, и сделал это. Это было нелегко, так как я очень начинал postgresql, поэтому я пробовал как можно больше способов, и, наконец, мне это удалось. – kenzy66

+0

Рад помочь. :) –

0

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

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

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

8

Попробуйте изменить файл (/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 
+0

Да, это сработает. Может быть, хорошее время для изучения всех других методов аутентификации Postgres. –

+0

Спасибо, мужик! Я провел несколько часов, борясь с этой проблемой. Ваш совет помог мне! – AntonAL

0

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

Запуск грабли БД: мигрировать был дает следующий errror

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

И Rspec спецификации/и грабли огурец терпит неудачу с подобными ошибками.

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

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

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

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

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