debezium在LANG=zh_CN.UTF-8下,无法解析timestamp类型的列值为BC的字段

文章目录

环境

系统平台:N/A

版本:14

症状

1.debezium日志报错无法解析

debezium日志显示无法解析2002-01-01 00:00:00 BC的字段值

复制代码
cat /hgsoft/dbz/logs/connector.log
[2026-02-14 13:21:05,343] ERROR [hg-dbz_test-sdb-V1|task-0] WorkerSourceTask{id=hg-dbz_test-sdb-V1-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:195)
Caused by: org.apache.kafka.connect.errors.ConnectException: java.time.format.DateTimeParseException: Text '2002-01-01 00:00:00 BC' could not be parsed, unparsed text found at index 19
        at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.format(DateTimeFormat.java:166)
        at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.timestampToInstant(DateTimeFormat.java:172)
        at io.debezium.connector.postgresql.connection.AbstractColumnValue.asInstant(AbstractColumnValue.java:81)
        at io.debezium.connector.postgresql.connection.ReplicationMessageColumnValueResolver.resolveValue(ReplicationMessageColumnValueResolver.java:111)
        at io.debezium.connector.postgresql.connection.pgoutput.PgOutputReplicationMessage.getValue(PgOutputReplicationMessage.java:97)
        at io.debezium.connector.postgresql.connection.pgoutput.PgOutputMessageDecoder$1.getValue(PgOutputMessageDecoder.java:733)
        at io.debezium.connector.postgresql.PostgresChangeRecordEmitter.columnValues(PostgresChangeRecordEmitter.java:184)
        at io.debezium.connector.postgresql.PostgresChangeRecordEmitter.getNewColumnValues(PostgresChangeRecordEmitter.java:127)
        at io.debezium.relational.RelationalChangeRecordEmitter.emitCreateRecord(RelationalChangeRecordEmitter.java:69)
        at io.debezium.relational.RelationalChangeRecordEmitter.emitChangeRecords(RelationalChangeRecordEmitter.java:47)
        at io.debezium.connector.postgresql.PostgresChangeRecordEmitter.emitChangeRecords(PostgresChangeRecordEmitter.java:96)
        at io.debezium.pipeline.EventDispatcher.dispatchDataChangeEvent(EventDispatcher.java:209)
 ... 17 more

2.核对查看数据类型及值

sql 复制代码
dbz_test=# \d test1
                    数据表 "public.test1"
栏位 |              类型              | 校对规则 |  可空的  | 预设 
------+--------------------------------+----------+----------+------
c1   | integer                        |          | not null | 
c2   | character varying(100)         |          |          | 
c3   | timestamp(3) without time zone |          |          | 
索引:
 "test1_pkey" PRIMARY KEY, btree (c1)
发布:
 "dbz_test_pub"

dbz_test=# select * from  test1;
c1 |  c2   |           c3           
----+-------+------------------------
1 | test1 | 2002-01-01 00:00:00 BC

问题原因

debezium 启动引用操作系统环境LANG,当环境变量为LANG=zh_CN.UTF-8无法解析PostgreSQL及瀚高数据库列类型为timestamp值为BC 标识的列。debezium启动环境改为en_US.utf-8 可以正常解析该字段值。

解决方案

修改debezium语言环境为en_US.UTF8,并重启debezium

复制代码
root#vi /usr/lib/systemd/system/dbz.service
[Install]
WantedBy=multi-user.target
[Unit]
Description=dbz
After=syslog.target network.target
[Service]
Type=simple
User=root
Group=root
# Start the hghac process
ExecStart= /usr/bin/sh /hgsoft/dbz/dbzServer.sh
# Send HUP to reload from dbz
ExecReload=/bin/kill -s HUP $MAINPID
#Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target

root#vi /hgsoft/dbz/dbzServer.sh

export LANG=en_US.UTF-8 
/hgsoft/dbz/bin/connect-distributed.sh    /hgsoft/dbz/config/connect-distributed.properties >> /hgsoft/dbz/logs/connect.log
root#systemctl daemon-reload
root#ssystemctl restart dbz
相关推荐
木子欢儿29 分钟前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust
迪菲赫尔曼41 分钟前
【基础篇 26】第一次在服务器完成训练:准备数据、断线继续、检查成果与备份
运维·服务器·人工智能·机器学习·计算机视觉
进击的荆棘1 小时前
Linux系统——线程同步与互斥
linux·运维·服务器·策略模式·同步·互斥·posix
隔窗听雨眠1 小时前
云数仓向PostgreSQL生态延伸的技术动因与工程代价
postgresql·数据库架构·云数仓
.道阻且长.1 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
codigger1 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
倔强的石头_1 小时前
集中式与分布式怎么选?我把手头11套系统重新过了一遍秤
数据库
挖掘狂人1 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
叼烟扛炮1 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
Rainmicro2 小时前
【无标题】
java·数据库·算法