如何创build一个已经安装了hstore扩展的新数据库?
最近我遇到了麻烦,试图与Django一起使用hstore。 我这样安装hstore:
$ sudo -u postgres psql postgres=# CREATE EXTENSION hstore; WARNING: => is deprecated as an operator name DETAIL: This name may be disallowed altogether in future versions of PostgreSQL. CREATE EXTENSION postgres=# \dx List of installed extensions Name | Version | Schema | Description ---------+---------+------------+-------------------------------------------------- hstore | 1.0 | public | data type for storing sets of (key, value) pairs plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows) 天真地以为我的新数据库将包括hstore。 情况并非如此:
 $ createdb dbtest $ psql -d dbtest -c '\dx' List of installed extensions Name | Version | Schema | Description ---------+---------+------------+------------------------------ plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (1 row) 
有没有办法自动在新创build的数据库hstore?
长话短说:
在template1数据库中安装hstore:
 psql -d template1 -c 'create extension hstore;' 
一步一步的解释:
正如PostgreSQL文档所述 :
CREATE EXTENSION将一个新的扩展加载到当前数据库中。
安装扩展是数据库特定的。 以下内容返回当前数据库名称:
 $ psql -c 'select current_database()' current_database ------------------ username (1 row) 
 如果你有一个以你的用户名命名的数据库。 现在用dbtest : 
 $ psql -d dbtest -c 'select current_database()' current_database ------------------ dbtest (1 row) 
 好的,你知道了。 现在,要创build安装了hstore的新数据库,您必须将其安装在template1数据库中。 根据文件 : 
CREATE DATABASE实际上是通过复制现有的数据库来工作的。 默认情况下,它复制名为template1的标准系统数据库。
我们开工吧:
 $ psql -d template1 -c 'create extension hstore;' 
并检查它的工作原理:
 $ createdb dbtest $ psql -d dbtest -c '\dx' List of installed extensions Name | Version | Schema | Description ---------+---------+------------+-------------------------------------------------- hstore | 1.0 | public | data type for storing sets of (key, value) pairs plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows) 
完成!