2012-04-01 4 views
2

방금 ​​레일스를 연구하기 시작했습니다. "rake db : migrate"를 시도하면 다음 오류가 발생합니다.rake db : migrate failed

레이크 중단되었습니다! FATAL : 피어 인증은 database.yml을에 문제가있는 것 같다하지만 난 어떻게 해결하는 방법 아무 생각이 사용자 "KT1"

실패했습니다. 제게 조언 해주세요.


의견을 보내 주셔서 감사합니다. PostgreSQL (0.13.2)을 사용하고 있습니다. 내 환경은 다음과 같습니다. 아래 우분투 11.10 루비 1.8.7 레일 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 

에 관해서 (켄지는 우분투 사용자 이름입니다.) 당신의 database.yml을 파일에서

+0

'database.yml'을 게시 할 수 있습니까? 중요한 데이터를 차단합니다. 어떤 데이터베이스 유형 (MySQL, PostgreSQL 등)을 사용하려고합니까? – Alex

답변

3

먼저 create the user kt1 다음에 create the database이 필요하고 사용자에게 권한을 부여해야합니다.

레일은 사용자와 데이터베이스를 만들 수있는 방법이 있습니다 만, PostgreSQL을에, 그것은 변경이처럼 (/etc/postgresql/9.1/main/) pg_hba.conf 파일을 수정 (이럴에게) 손으로

+0

고마워, 네 말이 맞아. 어젯밤에 너가 제안하고 만든 것을하려고 노력했다. PostgreSQL의 초보자이므로 쉽게 찾을 수있는 많은 방법을 시도해 보았습니다. 그리고 마침내 성공했습니다. – kenzy66

+0

도와 드리겠습니다. :) –

0

보면, 데이터베이스 어댑터, 아마도 데이터베이스 이름, 사용자 이름과 암호를있을 것이다에 .

어댑터는 당신이 수동으로 database.yml을에 포함 된 사용자 이름과 암호를 사용하여 해당 데이터베이스 시스템에 연결할 수 있는지

참조 어떤 sqllite3, mysql2을 사용하고있는 데이터베이스 시스템을 말한다. 수동으로 연결할 올바른 사용자 이름과 암호를 파악한 후에는 database.yml을 변경하여 다시 시도하고 다시 시도하십시오.

8

시도를 그렇게하는 것이 가장 좋습니다 피어에서 신뢰로 로컬 사용자를위한 방법.

# 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

응용 프로그램이 intially sqlite가 함께 내장하고 Heroku가에서 호스팅되도록 포스트 그레스로 포팅 할 때이 발생합니다.

갈퀴 DB를 실행 : 마이그레이션이되었다 유사한 오류가 실패하면 다음과 같은 errror

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

그리고 RSpec에 사양을 제공합니다/오이 레이크.

다음 단계

는 문제를 해결하는 것 : createuser -s rails (참고 :

슈퍼 사용자로 레일을 만들기 당신이 DB 수퍼 유저로 설정 자신을하지 않은 경우, 다른 DB를 지정해야합니다 사용자로이 작업을 수행하는 나를 위해 그것을 database.yml을에 규정 된

소유자 레일로 데이터베이스를 만들기 -U 포스트 그레스 createuser가 -s 레일)이었다.

createdb -O rails kt1 (1 단계에서와 같이 필요한 경우 이 작업을 수행 할 다른 DB 사용자를 지정하려면 -U를 추가하십시오.)

다음은 rake db : migrate, rspec spec/및 rake cucumber가 성공적으로 실행되어야합니다.