IT박스

역할이 존재하지 않으며 PostgreSQL을 사용할 때 데이터베이스를 만들 수 없습니다.

itboxs 2020. 12. 7. 07:58
반응형

역할이 존재하지 않으며 PostgreSQL을 사용할 때 데이터베이스를 만들 수 없습니다.


내 응용 프로그램에 Heroku를 사용하고 있으며 PostgreSQL이 필요하지만 개발에는 여전히 SQLite3를 사용할 수 있습니다. Heroku는 2 개의 다른 데이터베이스를 사용하지 말라고 강력히 권고했기 때문에 개발을 위해 PostgreSQL로 변경하기로 결정했습니다. 을 설치하고 gem pg공식 PostgreSQL 사이트로 이동하여 Windows 설치 프로그램을 가져오고 database.yml. 설치하는 동안 PostgreSQL에 대한 암호가 필요하므로 암호를 만들었습니다. 나는 변경했다 pg_hba.conf사용하는 파일 md5trust: 주문 가져 오기 과거에 fe_sendauth: no password supplied데이터베이스를 만들려고 할 때.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust # was md5
# IPv6 local connections:
host    all             all             ::1/128                 trust # was md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust

그러나 그것을 제거한 후 이제 이것을 얻습니다.

$ rake db:create
(in C:/app)
FATAL:  role "User" does not exist 
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"utf8", 
"database"=>"app_test", "pool"=>5, "username"=>nil, "password"=>nil} 

나는이 아직도 development.sqlite3하고 text.sqlite3그것은 문제가 될 수있다, 선물을? 무엇을해야합니까?

내 전체 요점은 다음과 같습니다. https://gist.github.com/1522188


에 사용자 이름을 추가하고 database.yml응용 프로그램의 이름 (또는 이름의 일부 변형)을 사용자 이름으로 사용할 수도 app_name있습니다. 자리 표시 자로 사용할 것입니다 .

development:
  adapter: postgresql
  encoding: utf8
  database: app_development
  pool: 5
  username: app_name
  password:

그런 다음 다음을 사용하여 PostgreSQL 내부에 사용자 (일명 "역할")를 만듭니다 psql.exe.

$ psql -d postgres
postgres=# create role app_name login createdb;
postgres=# \q

첫 번째 줄은 터미널에 있고 다음 두 줄은 내부에 psql있습니다. 그런 다음 rake db:create.

User사용자는 아마도 기본이지만 user이미 촬영 당신이 사용하고자하는 경우는 케이스를 보존하기 위해 인용해야 할 것이다, 그래서 PostgreSQL의 다른 목적을 위해 User사용자 이름과 같이

postgres=# create role "User" login createdb;

어쨌든 응용 프로그램 당 한 명의 사용자를 만드는 것이 좋습니다.

test항목에 대해서도 유사한 작업을 수행하고 싶을 것입니다 database.yml.


.NET Framework에를 username지정하지 않은 경우 PostgreSQL은 계정 (로그인) 이름으로 데이터베이스를 생성하려고 합니다 config/database.yml. OS X 및 Linux에서 whoami. Windows를 사용중인 것 같습니다.

해결 방법 A : 찾고있는 사용자 와 일치 하는 PostgreSQL 사용자만듭니다 . 예를 들면

createuser --superuser some_user

솔루션 B : mu의 대답에 표시된대로 사용자 이름 명시 적으로 설정하여 DB 사용자를 변경합니다 .


예를 들어 postgres라는 postgres에 대한 특정 계정 / 사용자가 컴퓨터에있는 경우.

그런 다음이 명령을 실행하면 역할 이름을 입력하라는 메시지가 표시됩니다.

sudo -u postgres createuser --interactive

그런 다음

rake db:create

작동해야합니다!

참고 URL : https://stackoverflow.com/questions/8639424/role-does-not-exist-and-unable-to-create-database-when-using-postgresql

반응형