news 2026/4/15 19:21:50

PG中 template0 与 template1区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PG中 template0 与 template1区别

文章目录

      • 1. 用途定位
      • 2. 内容差异
      • 3. 灵活性
      • 4. 典型使用场景
      • 5. 关键限制
      • 总结一句话:
    • 示例

1. 用途定位

特性template0template1
设计目的提供一个“原始、干净”的模板作为默认模板,支持用户自定义
是否可修改不可修改(系统保留)可以被用户修改

2. 内容差异

特性template0template1
初始状态完全干净,无任何用户对象可能包含用户自定义对象(如表、函数等)
是否可继承内容不会继承任何用户定义的内容会继承用户在其中添加的所有对象

3. 灵活性

特性template0template1
字符编码/区域设置支持自定义(可更改)固定为初始化时的值(不可更改)
适用场景创建完全独立、无依赖的数据库复用已有配置或对象的数据库

4. 典型使用场景

  • 使用template0

    • 需要创建一个全新的、干净的数据库。
    • 需要指定不同于默认的字符编码(如SQL_ASCII)或区域设置(如LC_COLLATE = 'C')。
    • 不希望继承任何用户自定义的对象或配置。
  • 使用template1

    • 希望复用template1中已有的配置、扩展或对象。
    • 创建常规数据库,无需特殊编码或区域设置要求。

5. 关键限制

  • 如果需要自定义字符编码(ENCODING)或区域设置(LC_COLLATE/LC_CTYPE),只能使用template0
  • 使用template1时,其编码和区域设置是固定的,无法更改。

总结一句话:

  • template0:干净、灵活,适合创建特殊需求的数据库。
  • template1:默认、可定制,适合复用现有配置的场景。

示例

template1=# create database xx WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'C' LC_CTYPE = 'C';CREATEDATABASEtemplate1=# create database xx2 WITH TEMPLATE = template1 ENCODING = 'UTF8' LC_COLLATE = 'C' LC_CTYPE = 'C';CREATEDATABASEtemplate1=# \l xx*ListofdatabasesName|Owner|Encoding|Collate|Ctype|ICU Locale|Locale Provider|Accessprivileges------+----------+----------+---------+-------+------------+-----------------+-------------------xx|postgres|UTF8|C|C||libc|xx2|postgres|UTF8|C|C||libc|(2rows)template1=# create database xx3 WITH TEMPLATE = template1 ENCODING = 'SQL_ASCII' LC_COLLATE = 'C' LC_CTYPE = 'C';ERROR: new encoding(SQL_ASCII)isincompatiblewiththe encodingofthe templatedatabase(UTF8)HINT:Usethe same encodingasinthe templatedatabase,orusetemplate0astemplate.template1=#template1=# create database xx3 WITH TEMPLATE = template1 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF8' LC_CTYPE = 'C';ERROR: new collation(en_US.UTF8)isincompatiblewiththe collationofthe templatedatabase(C)HINT:Usethe same collationasinthe templatedatabase,orusetemplate0astemplate.template1=#template1=#
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 8:16:58

C++中的unordered_multimap容器详解

C中的unordered_multimap容器详解 1. unordered_multimap概述 unordered_multimap是C11引入的关联容器,基于哈希表实现,允许存储重复键的键值对,提供快速的查找、插入和删除操作,平均时间复杂度为O(1)O(1)O(1)。 2. 基本特性 哈希…

作者头像 李华
网站建设 2026/4/2 20:26:14

C++中的stack容器详解

C中的stack容器详解 1. stack概述 stack是C标准模板库(STL)中的容器适配器,它提供后进先出(LIFO)的数据结构功能。stack不是独立的容器,而是基于其他容器(如deque、list)实现的适配器。 2. 基本特性 后进先出(LIFO):最后压入的元素最先弹出容…

作者头像 李华
网站建设 2026/3/26 2:14:45

对比6款AI降AIGC工具,免费款易踩坑

在论文写作过程中,借助AI工具可能导致AIGC检测率过高,引发学术查重风险。针对这一实际问题,专业领域积累的经验表明,选择高效可靠的降AIGC工具尤为关键。市场上存在大量宣称免费的降重平台,但实际效果参差不齐&#xf…

作者头像 李华
网站建设 2026/4/9 22:28:32

uni-app——uni-app 小程序弹窗意外关闭的事件冒泡问题

问题背景 在小程序开发中,弹窗(Popup)是非常常见的交互组件。但很多开发者会遇到一个令人困惑的问题:弹窗在用户操作过程中意外关闭了。 最近在开发会议召开功能时就遇到了这个问题:选择参会人员的弹窗,在…

作者头像 李华
网站建设 2026/4/10 16:43:25

合并两个有序数组Python解法

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应…

作者头像 李华
网站建设 2026/4/15 3:51:04

信达生物与礼来制药达成全球战略合作

、美通社信息:信达生物制药集团宣布与礼来制药达成战略合作,携手推进肿瘤及免疫领域创新药物的全球研发。本次协议为双方第七次合作,进一步深化了双方长期且富有成效的合作伙伴关系,携手为全球患者带来创新药物。这一独特的合作架…

作者头像 李华