2011-09-01 57 views
1

在VPS中,我安装了Postgres和2个Rails项目。两者都在生产模式下运行,并以不同用户的身份连接PG。CruiseControl.rb抛出Postgres异常

现在我想为其中的一个设置CruiseControl.rb。一切都很完美,当巡航试图运行它抛出这个错误的测试不同的是:

PGError: ERROR: permission denied to create database 
: CREATE DATABASE "myProject" ENCODING = 'utf8' 

此测试数据库与不同的所有者名称创建的,所有的人都在~/.cruise/projects/myProject/work/config/database.yml正确指定。

当我在~/.cruise/projects/myProject/work内部手动运行以下系列命令时,它们工作得很完美。

RAILS_ENV=test rake db:migrate 
rake test 

我使用这些下面的命令创建的数据库:

create user test_user with password 'abcxyz'; 
create database test_database TEMPLATE template0 owner test_user; 
grant all privileges on database test_database to test_user; 

击中Build Now按钮后,test_database是越来越删除,然后将其重新尝试创建它,并抛出该异常。

我很疑惑,为什么测试数据库首先被删除?有什么我在这里失踪?

回答

0

听起来好像您还没有授权您的测试用户创建新数据库,即使您已经为现有test_database上的test_user发布了权限。

您可能需要授予权限,以创建一个新的数据库,像这样:

GRANT CREATE ON SCHEMA public TO test_user; 

所以必须作为管理员或postgres用户执行了处决你之前创建的test_user和命令。

TL; DR

你应该比较为您的邮轮用户您执行这些步骤手动将用户的权限,什么是错的防止分贝在测试DB制作:测试:准备

+0

对不起,那没有工作:( – intellidiot

+0

而问题是,为什么数据库被删除的第一个地方... – intellidiot

+0

这就是如何db:测试:准备作品:克隆dev数据库架构,滴测试数据库,创建测试数据库,将dev数据库模式加载到测试中。 – Winfield