在Rails 3.2应用程序中使用Postgresql 9.2中的hstore时,在调试我的测试数据库时出现如下错误:
PG ::错误:错误:类型“hstore”不存在
由于它是从schema构建的,因此测试数据库没有经过开发数据库的hstore CREATE EXTENSION迁移。这导致了rake db:test:prepare上的错误。
如何解决这个问题?我实际上发现了一个解决方案,很高兴听到更多。
答案 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;