我通过这样做启动了postgresql服务器:
sudo service postgresql start
然后我连接到服务:
sudo sudo -u postgres psql
然后我创建了一个数据库(我试图在我的应用程序中添加投票系统):
postgres=# CREATE DATABASE "votes";
但我仍有同样的问题。
另外,当我这样做时
rake db:create
我得到了一个角色" ubuntu"不存在错误
这是我的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 :(得分:2)
您收到的关于role "ubuntu" does not exist
的错误是由于您尝试使用该用户(或role
)从应用访问您的postgress会话。
指定database.yml
development:
adapter: postgresql
database: votes
pool: 5
timeout: 5000
username: ubuntu
注意最后一行:username: ubuntu
?
您可以采取以下两种方式:
1)删除该行(也许将其注释掉) - 这将使您的应用程序使用默认的设置名称(或role
连接到您的postgress会话,因为您可能想要调用它)。默认情况下,大多数时间都是postgress
或您计算机上的用户名。
2)为你的postgress创建角色ubuntu
。为此,您可以check out this answer.
上述两种方法中的任何一种都应该适合你。
答案 1 :(得分:0)
使用postgres,它是Postgre的默认角色。或者尝试这个:
// Place your Spring DSL code here
beans = {
dataSource_defaultClientDb(org.apache.commons.dbcp.BasicDataSource) { bean ->
bean.singleton = true
driverClassName = 'com.mysql.jdbc.Driver'
username = '${defaultClientDB_username}'
password = '${defaultClientDB_password}'
url = '${defaultClientDB_url}'
}
dataSource_clientdb(SwitchableDataSource){ bean ->
bean.singleton = true
_targetDataSources = ["DEFAULT_DATASOURCE":ref("dataSource_defaultClientDb")]
targetDataSources = _targetDataSources
}
lobHandlerDetector_clientdb(org.springframework.jdbc.support.lob.DefaultLobHandler)
}
然后
sudo su - postgres
psql template1
您可以使用命令检查角色是否存在:
CREATE ROLE ubuntu superuser createdb login;