最近有I went into trouble人试图将hstore与Django一起使用.我是这样安装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)

有没有办法在新创建的数据库中自动存储hstore?

推荐答案

Long story short:

在template1数据库中安装hstore:

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

Step-by-step explanation:

如第the PostgreSQL documentation条所述:

创建扩展将新扩展加载到当前数据库中.

安装扩展是特定于数据库的.下面返回当前数据库名称:

$ psql -c 'select current_database()'
 current_database 
------------------
 username
(1 row)

如果你有一个以你的用户名命名的数据库.现在是dbtest:

$ psql -d dbtest -c 'select current_database()'
 current_database 
------------------
 dbtest
(1 row)

好的,你明白了.要创建新的数据库,现在就安装hstore.根据the doc:

"创建数据库"实际上是通过复制现有数据库来工作的.默认情况下,它复制名为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)

完成!

Sql相关问答推荐

Snowflake SQL比较克隆x原始计数

如何并行SELECT和RESET?

SQL是否可以计算每年的所有日期变化?

Postgres:对包含数字的字符串列表进行排序

Access VBA SQL命令INSERT FOR MULTIME VALUE

收到%1、%2或%2邮箱的唯一客户

SQL:如何取上一年的平均值?

导出部分条形码字符串GS1-128

如何使用SQL Server中的Nodes()方法执行与OPENXML相同的操作

PostgreSQL:查找继承表中的特定记录属于哪个表

更改重复值的情况

如何根据 SQL 中的阈值标记一个集群中的所有值?

如何在Hive SQL中分别按多列进行分组?

Postgresql 具有相似行为和模式行为的问题

递归 CTE 附加为行

SQL Server: 将JSON对象数组转换为表格格式

基于字符串的SQL查询

如何在 ClickHouse SQL 中使用 CTE 将邻居语句中的数字作为偏移量传递?

使用其他表 SUM 的交换价格转换价格并获得 AVG

SQLite 中的过滤运行总和视图