使用postgres使用hstore的Rails测试数据库出错

时间:2012-09-22 05:03:33

标签: ruby-on-rails postgresql hstore

在Rails 3.2应用程序中使用Postgresql 9.2中的hstore时,在调试我的测试数据库时出现如下错误:

PG ::错误:错误:类型“hstore”不存在

由于它是从schema构建的,因此测试数据库没有经过开发数据库的hstore CREATE EXTENSION迁移。这导致了rake db:test:prepare上的错误。

如何解决这个问题?我实际上发现了一个解决方案,很高兴听到更多。

4 个答案:

答案 0 :(得分:12)

我只是默认启用postgresql数据库来支持hstore(通过让模板数据库支持hstore)。运行以下命令:

psql -d template0 -c 'create extension hstore;'

然后任何Rails测试数据库都会自动支持扩展。

答案 1 :(得分:2)

当我试图运行psql -d template0 -c 'create extension hstore;'时(在@ Connor的回答中)我得到了错误:

psql: FATAL: database "template0" is not currently accepting connections

相反,我遵循了this blog post中涉及更新template1的过程。

1)创建包含以下内容的文件“hstore.sql”

CREATE EXTENSION hstore;

2)运行它:

psql -f /usr/local/Cellar/postgresql/9.2.1/share/postgresql/extension/hstore.sql -d template1

我怀疑这也会奏效(但我没试过):

psql -d template1 -c 'create extension hstore;'

(要查看template0和template1之间的不同写权限,我遵循this article

答案 2 :(得分:1)

要解决FATAL错误并允许template0接受连接,请执行以下命令:

UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';

答案 3 :(得分:1)

Heroku

heroku pg:psql --app YOUR_APP_NAME

然后运行

CREATE EXTENSION hstore;