Kafka JDBC Source连接器无法识别PostgreSQL表问题咨询
问题排查与解决方案
核心问题:schema配置逻辑与PostgreSQL结构不匹配
MySQL中schema与数据库概念等价,因此对接MySQL时配置schema.pattern=数据库名是正确的,但PostgreSQL的层级结构为实例 > 数据库 > schema > 表:
- 你连接URL中
jdbc:postgresql://localhost:5432/test-kafka的test-kafka是数据库名,已经在连接层面指定 - PostgreSQL默认的表归属schema为
public
你当前配置schema.pattern=test-kafka会导致连接器在test-kafka数据库下检索名为test-kafka的schema,自然匹配不到任何表。
- 修复方案:将配置项
schema.pattern=test-kafka修改为schema.pattern=public,如果你的表归属于自定义schema,替换为实际schema名即可。
辅助修复配置
- 取消配置行
#dialect.name=PostgreSqlDatabaseDialect的注释,强制指定PostgreSQL方言,避免连接器自动识别方言异常 - 若修改schema配置后仍未识别到表,可将
table.whitelist=mytable修改为table.whitelist=public.mytable,显式指定表的归属schema - 删除配置中重复定义的
topic.prefix项,避免topic命名异常
其他校验点
- 核对连接密码:你配置的
connection.password=postgress多了一个s,请确认postgres用户的实际密码,权限不足也会导致无法读取表结构 - 验证表权限:确认postgres用户对目标表有SELECT权限,可执行SQL
GRANT SELECT ON mytable TO postgres;赋权 - 校验大小写匹配:PostgreSQL默认会将未加双引号的SQL标识符转为小写,若建表时用双引号声明了大写表名/列名,需在配置中严格对应大小写
- 确认增量列存在:校验
mytable中存在名为id的数值型列,匹配incrementing.column.name=id的配置
修改完成后重启连接器即可正常识别PostgreSQL表并运行同步任务。
内容的提问来源于stack exchange,提问作者Faheem Sultan
相关产品推荐
相关产品推荐

