码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Postgres-on conflict do 引起的core宕问题


    问题描述

    postgres进程异常core宕,日志信息如下

    user=dbuser_monitor,db=cptest,app=dn11,client=10.4.135.57 LOG:  connection authorized: user=dbuser_monitor database=cptest

    2022-07-02 16:29:44 CST [139186]: [12] user=,db=,app=,client= LOG:  server process (PID 188687) was terminated by signal 11: Segmentation fault

    2022-07-02 16:29:44 CST [139186]: [13] user=,db=,app=,client= DETAIL:  Failed process was running: select upsert($1,$2,$3,$4,$5,$6)

    2022-07-02 16:29:44 CST [139186]: [14] user=,db=,app=,client= LOG:  terminating any other active server processes

    2022-07-02 16:29:44 CST [257355]: [1] user=[unknown],db=[unknown],app=dn11,client=10.4.135.58 LOG:  connection received: host=10.4.135.58 port=46828

    2022-07-02 16:29:44 CST [257355]: [2] user=repuser,db=[unknown],app=dn11,client=10.4.135.58 FATAL:  the database system is in recovery mode

    2022-07-02 16:29:44 CST [139186]: [15] user=,db=,app=,client= LOG:  all server processes terminated; reinitializing

     问题解决

    分析core文件

     

     分析upsert函数

    CREATE OR REPLACE FUNCTION upsert(_schema character varying, _cuname character 
    BEGIN
    raise info 'cu 11111 ';
    vsql := 'insert into cu_'||_shardid||' (schema, cuName, cuKey, cuId, value) values ($1, $2, $3, $4, $5) on conflict (schema, cuName, cuKey, cuId) do update set value = $5 returning insertFlag'; 

    _preName := cu.prepare_exe(vsql, '(text,text,text,int,text)');

    execute (format('EXECUTE %s(

    ,
    ,
    ,
    ,
    )',_preName,_schema,_cuName,_cuKey,_cuId,_value)) into flag;

    upsert

    upsert功能是PostgreSQL 9.5 引入的一项新功能:当插入遇到约束错误时可直接返回,或者改为执行UPDATE。

    PostgreSQL upsert功能(insert on conflict do)的用法_DemonHunter211的博客-CSDN博客

    问题解决

    将on conflict功能去掉,core宕问题解决 

  • 相关阅读:
    docker常用命令
    django rest framework 学习笔记-实战商城2
    js的宏任务与微任务
    开源 SD-Small 和 SD-Tiny 知识蒸馏代码与权重
    【MySql进阶】索引详解(三):索引的使用和创建原则、索引失效、索引优化
    JavaScript中常用数据类型,你知道几个?
    封装(个人学习笔记黑马学习)
    【深度学习】吴恩达课程笔记(四)——优化算法
    【Vue3】vue3中组合式Api的setup写法快速入门上手起步
    【wireshark抓取数据包-PGSQL协议】
  • 原文地址:https://blog.csdn.net/hqwang4/article/details/125610958
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号