2015-11-04 2 views
0

я начал сервер PostGreSQL, делая это:, когда я пытаюсь сделать грабли БД: мигрировать, я получаю ошибку: ActiveRecord :: NODatabaseError роль «убунту» не существует

sudo service postgresql start 

я подключен к обслуживание:

sudo sudo -u postgres psql 

затем я создал базу данных (я пытаюсь добавить систему голосования, чтобы мое приложение):

postgres=# CREATE DATABASE "votes"; 

, но я до сих пор га та же проблема.

Кроме того, когда я

rake db:create 

Я получаю роль "убунту" не существует ошибка

Вот мой database.yml:

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
# 
# default: &default 
# adapter: sqlite3 
# pool: 5 
# timeout: 5000 

# development: 
# <<: *default 
# database: db/development.sqlite3 

# # 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: 
# <<: *default 
# database: db/test.sqlite3 

# production: 
# <<: *default 
# database: db/production.sqlite3 

# FOR HEROKU -- POSTGRES DB SETUP 
# UNCOMMENT WHEN WORKING LOCALLY. 
development: 
    adapter: postgresql 
    database: votes 
    pool: 5 
    timeout: 5000 
    username: ubuntu 

test: 
    adapter: postgresql 
    database: planit_test 
    pool: 5 
    timeout: 5000 


# production: 
# <<: *default 
# database: db/production.sqlite3 

Пытаюсь создать ubuntu rold:

$ sudo sudo -u postgres psql 
psql (9.3.10) 
Type "help" for help. 

postgres=# CREATE ROLE ubuntu SUPERUSER 
postgres-# \q 
$ rake db:migrate 
rake aborted! 
ActiveRecord::NoDatabaseError: FATAL: role "ubuntu" does not exist 
+0

Вы настроили databases.yml? – Guido

+2

проверьте 'database.yml' и измените имя пользователя. Если вы хотите установить соединение с пользователем 'ubuntu', вам нужно сначала создать его в postgres. Проверьте документацию [create role] (http://www.postgresql.org/docs/8.3/static/sql-createrole.html). После его создания убедитесь, что вы [изменяете роль] (http://www.postgresql.org/docs/9.0/static/sql-alterrole.html) с правильными разрешениями. – radubogdan

+0

Да, я подключен к сервису. и затем я сделал CREATE USER ubuntu SUPERUSER. usernmae «ubuntu» находится в моем файле database.yml. По-прежнему возникает такая же проблема – coderk

ответ

2

Ошибка, которую вы получаете около role "ubuntu" does not exist, связана с пользователем (или role), который вы пытаетесь использовать для доступа к своей сессии после сессии из приложения.

Как ваш database.yml указано

development: 
    adapter: postgresql 
    database: votes 
    pool: 5 
    timeout: 5000 
    username: ubuntu 

Обратите внимание на последнюю строку: username: ubuntu?

Два способа вы можете пойти по этому поводу является:

1) Удалите эту строку (возможно закомментировать) - Это позволит сделать ваше приложение подключиться к Postgress сессии с именем по умолчанию установлено (или role, как вы может захотеть назвать это). По умолчанию в большинстве случаев будет postgress или ваше имя пользователя на вашем компьютере.

2) создать роль ubuntu для вашего postgress. Для этого вы можете check out this answer.

Любой из указанных выше способов должен хорошо работать для вас.

+0

Я только что добавил имя пользователя: ubuntu в database.yml, думая, что это будет исправление. однако я удалил его, и я все еще получаю ту же проблему NoDatabseError. Я попробую второй вариант – coderk

+0

Я смущен тем, что должен делать. принимая ваши советы, посмотрите, что мои результаты (я отредактировал вопрос выше), когда я пытаюсь создать новую роль. – coderk

+0

Когда вы переходите в 'psql' и перечисляете всех пользователей' \ du', каков вывод? –

0

Используйте postgres вместо этого, это роль по умолчанию из Postgre. Или попробуйте это один:

sudo su - postgres 
    psql template1 

затем

CREATE ROLE ubuntu superuser createdb login; 

Вы можете проверить, если роль не существует, или с помощью команды:

\du