当前位置: 首页 > news >正文

go 修改postgresql的配置参数

postgresql.conf与postgresql.auto.conf的区别

  • postgresql.auto.conf的优先级高于postgresql.conf,如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面,系统会先读postgresql.auto.conf的参数配置。

  • 使用alter system set修改的是postgresql.auto.conf文件的内容,postgresql.conf则是通过文本编辑方式修改。比如执行alter system set max_wal_size=default将参数设回 default 时,postgresql.auto.conf文件里的max_wal_size这项配置会被删除,重新用回postgresql.conf文件的设置。

  • postgresql.conf文件的参数后面有# (change requires restart),表示必须重启才能生效,使用select pg_reload_conf()或pg_ctl reload不行。

执行alter system set max_wal_size=2500;
发现修改的是postgresql.auto.conf文件
执行select pg_reload_conf();同样的参数,优先加载的是postgresql.auto.conf文件里面的参数配置
重启postgresql后,同样的参数,优先使用的postgresql.auto.conf文件里面的参数配置
手工修改postgresql.auto.conf文件,执行select pg_reload_conf()会加载postgresql.auto.conf文件
手工修改postgresql.auto.conf文件,重启postgresql会加载postgresql.auto.conf文件

go的代码样例

func main() {// 连接到 PostgreSQL 数据库dsn := "host=localhost user=user password=password  dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai"db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})if err != nil {log.Fatal(err)}defer func() {sqlDB, err := db.DB()if err != nil {log.Fatal(err)}sqlDB.Close()}()cmd := "ALTER SYSTEM SET array_nulls= 'off' "_, err = db.Raw(cmd).Rows()if err != nil {return}cmdReload := "SELECT pg_reload_conf()"_, err = db.Raw(cmdReload).Rows()if err != nil {fmt.Printf("执行sql[%s]失败:%v", cmdReload, err)return}cfg, err := ini.LoadSources(ini.LoadOptions{AllowShadows: true}, "/var/lib/pgsql/12/data/postgresql.auto.conf")// 获取指定的 Sectionsection, err := cfg.GetSection("DEFAULT")if err != nil {log.Fatal(err)}keyToCheck := "array_nulls"// 检查 key 是否存在if section.HasKey(keyToCheck) {fmt.Printf("Key '%s' exists in the section.\n", keyToCheck)} else {fmt.Printf("Key '%s' does not exist in the section.\n", keyToCheck)}
}

相关文章:

  • C++完成Query执行sql语句的接口封装和测试
  • 开启Android学习之旅-5-Activity全屏
  • CHS_01.1.4+操作系统体系结构 一
  • C++推箱子游戏开发
  • React Hooks的useState、useRef使用
  • Linux-进程间通信_管道
  • <设计模式> 七大原则
  • Linux--好玩的进度条
  • 【博士每天一篇文-算法】Graph Structure of Neural Networks
  • hfish蜜罐docker部署
  • 【计算机网络】TCP原理 | 可靠性机制分析(二)
  • 1045 - Access denied for user ‘root @223.98.184.126‘ (using password: YES)
  • 解决word图片格式错乱、回车图片不跟着换行的问题
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#)
  • FreeRTOS学习总结(二)FreeRTOS任务创建和删除API函数
  • 4个实用的微服务测试策略
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Cookie 在前端中的实践
  • Electron入门介绍
  • ES6系列(二)变量的解构赋值
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java超时控制的实现
  • rc-form之最单纯情况
  • Solarized Scheme
  • Web Storage相关
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 聚类分析——Kmeans
  • 入门级的git使用指北
  • 说说动画卡顿的解决方案
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​Python 3 新特性:类型注解
  • ​渐进式Web应用PWA的未来
  • #if 1...#endif
  • #QT(TCP网络编程-服务端)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • ${factoryList }后面有空格不影响
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net core 控制台应用程序读取配置文件app.config
  • .NET MVC第三章、三种传值方式
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • @RequestBody与@ModelAttribute
  • [<事务专题>]
  • [20170705]diff比较执行结果的内容.txt
  • [Android]Tool-Systrace
  • [HNOI2008]Cards