本章节为使用者介绍统一SQL的常见问题排查。

7.1. 问题清单

7.1.1. 统一SQL链接库未配置导致启动失败

问题现象】启动过程中出现以下报错信息

../_images/%E9%93%BE%E6%8E%A5%E5%BA%93%E6%9C%AA%E6%89%BE%E5%88%B0.png

问题原因】未显式配置统一SQL链接库文件路径,且在默认路径下也没有找到统一SQL链接库文件

解决方案】在 unisql.conf 文件中配置链接库路径,例如

unisql.lib.full-path=/home/zhuxd34513/unisql/build/unisql/c/x86_64/lib/unisql.linux.x86_64.so

统一SQL配置可参考 配置文件

7.1.2. sql-convert-runtime版本和统一SQL链接库版本不一致导致启动失败

问题现象】启动过程中出现以下报错信息

../_images/%E9%93%BE%E6%8E%A5%E5%BA%93%E7%89%88%E6%9C%AC%E5%8F%B7%E4%B8%8D%E5%8C%B9%E9%85%8D.png

问题原因】统一SQL内置了版本检测机制,由于统一SQL链接库版本号和sql-convert-runtime版本号不匹配导致启动失败

解决方案】保持sql-convert-runtime和统一SQL链接库版本号一致,即使用同一个发布包中的链接库和sql-convert-runtime组件。

7.1.3. 如何查看统一SQL加载的配置文件路径

  1. 统一SQL的日志文件和统一SQL的config配置目录同级,例如

    ../_images/%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84.png
  2. 在日志文件中会包含统一SQL实际加载的配置文件路径,例如

    ../_images/%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9.png
  3. 日志【用户初始化配置文件信息为XXX】中即是统一SQL生效的配置文件路径。

7.1.4. 如何查看统一SQL加载的链接库路径

  1. 统一SQL链接库路径相关日志输出在应用程序日志中,例如

    ../_images/%E9%93%BE%E6%8E%A5%E5%BA%93%E5%8A%A0%E8%BD%BD%E8%B7%AF%E5%BE%84.png
  2. 其中【加载链接库路径】日志行会显示实际加载的链接库完整路径

7.1.5. 如何查看统一SQL生效的配置项值

  1. 统一SQL的日志文件和统一SQL的config配置目录同级,例如

    ../_images/%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84.png
  2. 在日志文件中会包含统一SQL实际生效的配置项值,例如

    ../_images/%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9.png
  3. 日志【开始设置初始化信息XXX】中打印的是实际生效的配置项值,格式是个json字符串

7.1.6. 如何查看统一SQL转换后的SQL

  1. 修改 unisql.conf 配置文件,开启统一SQL的debug日志,涉及统一SQL配置项如下

    ../_images/%E5%BC%80%E5%90%AF%E7%BB%9F%E4%B8%80SQL%E7%9A%84debug%E6%97%A5%E5%BF%97.png
  2. 查看对应的日志文件内容,例如

    ../_images/%E7%BB%9F%E4%B8%80SQL%E8%B0%83%E8%AF%95%E6%97%A5%E5%BF%97.png
  3. 其中【入参】日志行中的 SourceSql 为源SQL,【出参】日志行中的 TargetSql 为转换后SQL

7.1.7. 如何查看统一SQL转换时用到了哪些配置项

  1. 修改 unisql.conf 配置文件,开启统一SQL的debug日志,涉及统一SQL配置项如下

    ../_images/%E5%BC%80%E5%90%AF%E7%BB%9F%E4%B8%80SQL%E7%9A%84debug%E6%97%A5%E5%BF%97.png
  2. 查看对应的日志文件内容,例如

    ../_images/%E7%BB%9F%E4%B8%80SQL%E8%B0%83%E8%AF%95%E6%97%A5%E5%BF%97.png
  3. 其中【依赖配置项提示】日志行中会显示实际依赖的配置项内容