查找所有的数据库

select datname from pg_database

运行该命令后,我们会发现其中出现了一些其它的数据库

在这里插入图片描述

接下来,我们分析 template0template1 的作用。


template1

template1 是 PostgreSQL 默认用于创建新数据库的模板。当执行 CREATE DATABASE new_db; 时,PostgreSQL 实际上会复制 template1 的内容来创建 new_db

这意味着:

  • 你可以修改 template1:如果你在 template1 中添加了表、函数、扩展或其他对象,那么之后所有基于 template1 创建的新数据库都会包含这些对象。这对于在所有新数据库中预装一些常用结构或扩展非常有用。
  • 需要小心修改:虽然可以修改 template1,但修改后,所有新数据库都会继承这些修改。如果你只想某个数据库有特定对象,最好在创建该数据库后再添加,而不是修改 template1

template0

template0 也是一个模板数据库,但它有一个关键特性:它被设计成一个 “纯净”的模板

这意味着:

  • 不能修改 template0:你不能直接在 template0 中添加、删除或修改对象。

  • 用于恢复或特定编码template0 的主要用途是当 template1 被修改后,如果你需要创建一个完全没有任何自定义对象的新数据库时,可以使用 template0。例如,当你需要创建使用不同字符集编码的数据库时,通常会基于 template0 来创建,以确保编码的一致性。
    你可以通过以下方式基于 template0 创建数据库:

    CREATE DATABASE my_clean_db TEMPLATE template0;
    

简而言之,template1 是你常用的模板,可以自定义;而 template0 是一个干净的、不可修改的模板,用于特定情况,比如创建纯净的数据库或者处理字符集问题。


创建更多自定义的模板

  1. 创建一个普通的数据库: 首先,你需要创建一个常规的数据库。
CREATE DATABASE my_custom_template;
  1. 配置你的新数据库: 连接到这个新创建的数据库 (my_custom_template),并向其中添加所有你希望在新数据库中自动包含的对象。这包括:

    • 表结构(CREATE TABLE
    • 视图(CREATE VIEW
    • 函数和存储过程(CREATE FUNCTION
    • 扩展(CREATE EXTENSION), 例如 uuid-ossppg_trgm 等。
    • 预设数据(INSERT INTO
    • 权限设置(GRANT
-- 添加一个扩展
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";-- 创建一个表
CREATE TABLE users (id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,email VARCHAR(100) NOT NULL
);-- 插入一些初始数据
INSERT INTO users (username, email) VALUES ('admin', 'admin@example.com');
  1. 将数据库标记为模板: 完成配置后,断开与该数据库的所有连接。然后,你需要修改其属性,将其标记为一个模板。这个操作需要超级用户权限,并且不能在连接到该数据库时执行。
update pg_database set datistemplate = true where datname = 'my_custom_template';
  1. 根据模板创建数据库
create database mydb template my_custom_template

注意:
只有超级用户才能将数据库标记为模板。

断开连接: 在将数据库标记为模板(ALTER DATABASE ... IS TEMPLATE TRUE;)之前,必须确保没有其他会话连接到该数据库。否则,操作会失败。

模板的修改: 理论上,你可以修改一个已经被标记为模板的数据库。但是,当你修改它时,所有当前连接到它的会话也必须被断开。最佳实践是,如果你需要更新模板,可以先将它设置为 IS TEMPLATE FALSE,进行修改,然后再设置为 IS TEMPLATE TRUE

  1. 查看有哪些template
SELECT datname
FROM pg_database
WHERE datistemplate = TRUE;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914212.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914212.shtml
英文地址,请注明出处:http://en.pswp.cn/news/914212.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM 不知道答案,但是知道去调用工具获取答案?

思考: LLM 自己“不知道”某个事实性问题的答案,但仍然能“知道”去调用工具获取正确答案,这听起来确实有点像个悖论该内容触及了大型语言模型(LLM)的核心局限性以及(Agents)的智能所在。实际上…

2025年7月11日学习笔记一周归纳——模式识别与机器学习

2025年7月11日学习笔记&一周归纳——模式识别与机器学习一.一周工作二.我的一些笔记汇总三.发现的一些新的学习资料和爱用好物1.百度网盘AI笔记:2.b站资料:3.听说的一些好书:一.一周工作 本周学习了清华大学张学工汪小我老师的模式识别与…

LeetCode 138题解 | 随机链表的复制

随机链表的复制一、题目链接二、题目三、分析四、代码一、题目链接 138.随机链表的复制 二、题目 三、分析 数据结构初阶阶段,为了控制随机指针,我们将拷贝结点链接在原节点的后面解决,后面拷贝节点还得解下来链接,非常麻烦。这…

【计算机存储架构】分布式存储架构

引言:数据洪流时代的存储革命“数据是新时代的石油” —— 但传统存储正成为制约数据价值释放的瓶颈核心矛盾:全球数据量爆炸增长:IDC预测2025年全球数据量将达175ZB(1ZB10亿TB)传统存储瓶颈:单机IOPS上限仅…

【Linux-云原生-笔记】数据库操作基础

一、什么是数据库?数据库就是一个有组织、可高效访问、管理和更新的电子化信息(数据)集合库。简单来说,数据库就是一个高级的Excel二、安装数据库并初始化1、安装数据库(MySQL)dnf search一下mysql数据库的…

HarmonyOS中各种动画的使用介绍

鸿蒙(HarmonyOS)提供了丰富的动画能力,涵盖属性动画、显式动画、转场动画、帧动画等多种类型,适用于不同场景的交互需求。以下是鸿蒙中各类动画的详细解析及使用示例:1. 属性动画(Property Animation&#…

CSP-S 模拟赛 10

T1 洛谷 U490727 返乡 思路 首先要意识到一个问题,就是如果所有人总分一定,那么是不会出现偏序的。 可以感性理解一下,就是对于 i,ji, ji,j, 若 ai≤aj,bi≤bja_i \leq a_j, b_i \leq b_jai​≤aj​,bi​≤bj​,那么…

CMD,PowerShell、Linux/MAC设置环境变量

以下是 CMD(Windows)、PowerShell(Windows)、Linux/Mac 在 临时/永久 环境变量操作上的对比表格:环境变量操作对照表(CMD vs PowerShell vs Linux/Mac)操作CMD(Windows)P…

MySQL(131)如何解决MySQL CPU使用率过高问题?

解决MySQL CPU使用率过高的问题需要从多个方面进行排查和优化,包括查询优化、索引优化、配置优化和硬件资源的合理使用等。以下是详细的解决方案和相应的代码示例。 一、查询优化 1. 检查慢查询 使用MySQL的慢查询日志来找到执行时间长的查询。 SET GLOBAL slow_que…

docker基础与常用命令

目录 一.docker概述 1.docker与虚拟机区别 2.Linux 六大命名空间 3.Docker 的核心技术及概念 二.docker部署安装 三.docker常用命令 1.搜索镜像 2.获取镜像 3.查看镜像信息 4.添加镜像标签 5.删除镜像 6.存出与载入镜像 7.上传镜像 8.创建容器 9.查看容器状态 1…

Cypress与多语言后端集成指南

Cypress 简介 基于 JavaScript 的前端测试工具,可以对浏览器中运行的任何内容进行快速、简单、可靠的测试Cypress 是自集成的,提供了一套完整的端到端测试,无须借助其他外部工具,安装后即可快速地创建、编写、运行测试用例,且对每一步操作都支持回看不同于其他只能测试 UI…

计算机毕业设计ssm基于JavaScript的餐厅点餐系统 SSM+Vue智慧餐厅在线点餐管理平台 JavaWeb前后端分离式餐饮点餐与桌台调度系统

计算机毕业设计ssm基于JavaScript的餐厅点餐系统0xig8788(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。扫码点单、手机支付、后厨实时出票已经成为食客对餐厅的基本预期。传统的…

wedo稻草人-----第32节(免费分享图纸)

夸克网盘:https://pan.quark.cn/s/ce4943156861 高清图纸源文件,需要的请自取

Jmeter函数的使用

函数名作用用法${__Random(,,)}${__RandomString(,,)}随机生成一些东西${__Random(000,999,)} ${__Random(${test1},${test2},)}${__RandomString(${__Random(3,9,)},asdfghjkl,)}${__time(,)}获取当前的时间戳,也可以定义格式${__CSVRead(,)}读取CSV文件的格式&…

Windows 用户账户控制(UAC)绕过漏洞

漏洞原理CVE-2021-31199 是一个 Windows 用户账户控制(UAC)绕过漏洞,CVSS 3.1 评分 7.8(高危)。其核心原理如下:UAC 机制缺陷:Windows UAC 通过限制应用程序权限提升系统安全性,但某…

comfyUI-controlNet-线稿软边缘

{WebUI&comfyUI}∈Stable Diffuision,所以两者关于ContrlNet的使用方法的核心思路不会变,变的只是comfyUI能够让用户更直观地看到,并且控制生图的局部过程。 之前的webUI中涉及到ContrlNet部分知识:SD-细节控制-CSDN博客 概…

SOEM build on ubuntu

1.配置 soem2.编译 soem3.结果4.记录一下自己的开发环境家里台式机

STM32--USART串口通信的应用(第一节串口通信的概念)

咱们今天呢给大家讲解咱们 stm32 开发当中的串口的应用啊 , 串口这个专题呢啊是我们那 个学习上必须要掌握的一个外设串口有什么作用呢,其实在我们以后的这个开发程序当中,咱们可能经常需要用到一些调试 信息,对吧? 啊…

STM32F407ZGT6天气时钟+实时温湿度显示(附源码)

文章目录实现功能:项目展示:代码解析:实现功能: 1.主要功能:通过485通信获取传感器温湿度,温湿度数据显示、实时时钟显示与用户交互。使用LVGL在显示屏上展示传感器温湿度数据,并提供UI设置温度…

和鲸社区深度学习基础训练营2025年关卡4

使用 pytorch 构建一个简单的卷积神经网络(CNN)模型,完成对 CIFAR-10 数据集的图像分类任务。 直接使用 CNN 进行分类的模型性能。 提示: 数据集:CIFAR-10 网络结构:可以使用 2-3 层卷积层,ReLU…