我正在尝试创建用于开发和测试的PostgreSQL数据库。 我使用的工具是:
- OSX Yosemite操作系统
- Rails版本:4.2.0
- Git版本:2.2.2
- psql版本:9.4.0
- Ruby版本:2.1.0p0
- HomeBrew版本:0.9.5
Gemfile文件内容:
gem 'pg'
database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: myapp_development
username: username
password:
test:
<<: *default
database: myapp_test
rake db:create:all
返回:
PG::InsufficientPrivilege: ERROR: permission denied to create database
: CREATE DATABASE "myapp_development" ENCODING = 'unicode'
.... (lots of tracing)
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"myapp_development", "username"=>"username", "password"=>nil}
myapp_test already exists
出了什么问题?
编辑
我刚试着把database.yml中的用户名改成我在Mac上使用的用户名。它奏效了。它还告诉我,不仅maybe_test
已经存在,它还告诉我myapp_development
也已经存在。
- 为什么它不能使用我创建并分配了
CREATEDB
角色的另一个用户名? - 为什么它说开发环境无法创建,然后告诉我它已经存在了?
这一切似乎太混乱了,让我想起了很早以前用Apache设置PHP时的情况。我不想每次创建新应用并尝试遵循Heroku建议在开发过程中使用PostgreSQL时都要处理问题。
rake db:drop:all
然后rake db:create:all
- Малъ СкрылевъCREATEDB
角色的权限。这样你的问题就会得到解决。然后执行rake db:drop
和rake db:create
。 - Arup Rakshit