页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

(本文档仅供参考)

问题

         使用原生sql数据集查询数据时,当参数或者where后面条件是中文时无法查询出数据,若是英文可以查询出数据,在数据库工具直接执行sql,无论where=中文或者英文都可以查询出数据。

问题原因

          此问题是因为客户所使用的数据源url链接有误导致的。          场景1:我们产品使用的url链接本身是没有带amp此问题是因为数据源中所使用的链接字符串有误导致的。

场景1

我们产品使用的url链接本身是没有带amp;的(amp;代表的是html里面&的转义符号),去掉此字符后,查询正常,以下是错误以及正确的url链接:

...

错误的url链接导致where=中文查询错误:

...

jdbc:mysql://ip:端口/数据库名称?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false

...

修改后正常的url链接:

          jdbc jdbc:mysql://ip:端口/数据库名称?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false          场景2:选择驱动程序类之后,URL链接默认生成一些参数,将后面生成的参数都删除了,从而导致查询不正常。一般不需要去删除掉这些参数,删除后可能会引起一系列问题。

场景2

选择驱动程序类之后,URL链接默认生成一些参数,将后面生成的参数都删除了,从而导致查询不正常。一般不需要去删除掉这些参数,删除后可能会引起一系列问题。

          去掉了参数后的URL链接:

          jdbc jdbc:mysql://<servername>:<port>/<database>

          正常URL链接:           正常URL链接:

jdbc:mysql://<servername>:<port>/<database>?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=GBK&zeroDateTimeBehavior=convertToNull

         

         

Viewtracker