Flink 1.18 PostgreSQL JDBC Source Connector读取大小写混合字段失败求助
Flink SQL Client连接PostgreSQL处理大小写混合字段报错解决方案
在使用Flink 1.18的sql-client.sh读取PostgreSQL数据时,若存在idLog这类大小写混合的字段,会出现Flink自动将字段名转为小写idlog,导致PostgreSQL返回"column 'idlog' does not exist"的错误,而相同场景下连接Oracle可正常运行。
解决方法
核心是通过配置Flink JDBC连接器参数,关闭字段名自动转小写的行为:
在CREATE TABLE语句的WITH配置中添加'lookup.lower-case-name' = 'false'参数,该参数会让Flink保留字段名的原始大小写,避免转换后与PostgreSQL中实际的大小写混合字段不匹配。
修改后的建表语句如下:
CREATE TABLE tmp_tb ( `aa` string, `idLog` string ) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:postgresql://vm131:5432/postgres', 'username' = 'postgres', 'password' = '123456', 'table-name' = 'public.roamer', 'lookup.lower-case-name' = 'false' );
原因说明
- PostgreSQL对字段名大小写敏感:若创建表时用双引号定义了大小写混合的字段(如
"idLog"),查询时必须使用匹配的大小写或双引号包裹字段名;未加双引号的字段会被自动转为小写。 - Oracle默认不区分字段名大小写:即使Flink将字段转为小写,Oracle仍能匹配到对应的字段,因此不会报错。
内容的提问来源于stack exchange,提问作者distinct
相关产品推荐
相关产品推荐

