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
相关推荐
恒53912 小时前
Linux文件系统I
linux·运维·服务器
阿成学长_Cain13 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库
青瓦梦滋13 小时前
协议定制/序列化-反序列化(Linux视角)
linux·服务器·网络·c++
OceanBase数据库官方博客15 小时前
OceanBase AI 时代,数据库的变与不变(技术解析与实践)
数据库·人工智能·oceanbase
阿成学长_Cain16 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
ywl47081208716 小时前
Mysql 平衡二叉树、红黑树、B树、B+树区别以及应用场景(五)
数据库·b树·mysql
IvorySQL17 小时前
IvorySQL Agent 探索与实践
数据库·人工智能·postgresql·oracle·ivorysql
SelectDB18 小时前
美团数十 PB 规模 Apache Doris 实践:从统一 OLAP 到 AI-Native 数据基座
大数据·数据库·性能优化
Database_Cool_18 小时前
阿里云RDS主从延迟解决方案_只读实例半同步复制最佳实践
数据库·人工智能