参见英文答案 >
How to create a new database with the hstore extension already installed?1
我在远程服务器上设置了一个Rails应用程序,并创建了一个hstore扩展
我在远程服务器上设置了一个Rails应用程序,并创建了一个hstore扩展
sudo -u postgres psql CREATE EXTENSION hstore;
然后,我在其中一个postgres表中部署了使用hstore的应用程序的迭代,但是当它运行迁移时,它给出了一个错误消息
PG::UndefinedObject: ERROR: type "hstore" does not exist
然后,我再次尝试这样做
sudo -u postgres psql CREATE EXTENSION hstore;
但它告诉我,商店已经存在
ERROR: extension "hstore" already exists
这个圈子继续下去了.
任何想法可能导致这个问题?我在Ubuntu 12.04服务器上使用postgres 9.1
更新
注意,如果这个问题与权限有关,我试图检查我的权限,但是出现以下错误
sudo -u postgres psql -U username psql: FATAL: Peer authentication Failed for user "username"
更新
虽然安装了hstore,但它不是我使用的数据库的扩展.如何安装在特定的数据库中?
psql -d db_production -c '\dx' List of installed extensions Name | Version | Schema | Description ---------+---------+------------+------------------------------ plpgsql | 1.0 | pg_catalog | PL/pgsql procedural language (1 row)
解决方法
要在数据库中创建扩展名,必须显式连接到该数据库.所以,如果你的数据库是my_app_development,你必须做:
sudo -u postgres psql my_app_development create extension hstore;
另外,你不知道你在哪个rails版本.如果你不在rails-4上,你将不得不使用postgres hstore gem.