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
相关推荐
Gauss松鼠会2 分钟前
【GaussDB】GaussDB锁阻塞源头查询
java·开发语言·前端·数据库·算法·gaussdb·经验总结
2601_9657984712 分钟前
How to Build a Custom Artisan Store on WordPress: Crafti Theme Review
linux·服务器·数据库
霸道流氓气质32 分钟前
Spring 事务传播机制与 REQUIRES_NEW
java·数据库·spring
luyun02020234 分钟前
论坛里的小工具,吾爱出品
运维·服务器·windows
江湖有缘40 分钟前
Docker实战 | 使用Docker部署EasyNode服务器面板工具
服务器·docker·容器
YOU OU1 小时前
Redis分布式锁
数据库·redis·分布式
你怎么知道我是队长1 小时前
计算机虚拟存储管理与页面置换算法详解
服务器·网络·算法
小草儿7991 小时前
GBase 8s CLOB → VARCHAR(32739) 数据迁移方案文档
数据库
秋田君1 小时前
QT_QColorDialog颜色对话框
java·数据库·qt
涛声依旧393161 小时前
运维项目:InnoAI SQL 助手
运维·数据库·sql