(本文档仅供参考)

问题描述

数据库为selectdb数据库,通过原生sql数据集查询预览时,发现字段的排序和名称显示不正常。如下图

解决方案

此问题通常是由于链接字符串没有配置参数用于获取输出列的别名导致,经检查,用户使用的mysql驱动连接的数据库,且未加任何参数,如下图所示:

对此可以通过增加连接字符串的参数可以解决,需要添加的参数为:【useOldAliasMetadataBehavior=true】,为了避免还有其他问题出现,建议把常用参数都默认增加,减少问题发生的机率:

jdbc:mysql://<servername>:<port>/<database>?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useCursorFetch=true&defaultFetchSize=-2147483648

上述链接字符串中涉及到的参数相关作用说明参考如下(说明来源网络资料,仅供参考):

参数名称作用描述
useOldAliasMetadataBehavior=true

用于控制JDBC在获取列名时是否使用别名。当该参数设置为true时,ResultSetMetaData会返回列的别名,而不是列名。

这个参数在处理SQL查询中的别名时非常有用,尤其是在使用别名进行数据检索时,可以确保别名被正确识别和使用‌。

useUnicode=true指定是否使用 Unicode 字符集进行编码和解码。
characterEncoding=UTF8设置字符编码为 UTF-8,确保正确处理多语言字符。
zeroDateTimeBehavior=convertToNull当数据库中存储的时间值为 "0000-00-00 00:00:00" 时,将其转换为 NULL
useCursorFetch=true启用游标抓取模式,适合处理大数据量查询结果。
defaultFetchSize=-2147483648设置默认抓取大小为 -2147483648(通常表示无限制),用于优化大数据集传输性能。

另,目前产品在新建数据源,选择对应数据库时会自动带出常用的链接字符串,建议是保持默认避免出现未知问题。