6

在 Rails 3.2 应用程序中的 Postgresql 9.2 中使用 hstore 时,我在搜索测试数据库时收到如下错误消息:

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

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

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

4

4 回答 4

12

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

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

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

于 2012-09-22T05:03:32.810 回答
2

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

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

相反,我遵循了这篇博客文章中的过程,其中涉及更新 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 之间的不同写入权限,我遵循了这篇文章

于 2013-07-19T10:58:46.850 回答
1

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

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

于 2013-10-02T14:50:16.323 回答
1

对于Heroku

heroku pg:psql --app YOUR_APP_NAME

然后运行

CREATE EXTENSION hstore;
于 2016-03-07T17:34:20.057 回答