【问题】PostgreSQL数据库应用服务部署测试环境查不到数据
摘要本文记录了一个数据库查询的疑难问题排查过程本地和测试环境数据一致本地服务能查到数据但测试环境服务却查不到。通过对比SQL、检查配置、排查参数均未果甚至大模型也给出了错误方向。最终发现是SQL中两张表只有一张拼接了schema而本地schema为public默认导致查询正常测试环境因schema不一致而查询失败。解决方案是在MyBatis XML中为所有表统一拼接schema。目录问题现象排查问题思路大模型结果问题解决问题本地测试征程表和表中的数据也和测试环境一样本地启动能查到数据上线测试环境查不到数据。把sql从日志中复制出来到dbeaver中执行dbeaver连接的也是测试环境发现也能查出数据。只有服务执行的时候查不到数据。问题现象错误截图dbeaver查到数据的截图本机查到数据的截图排查问题思路首先想到的服务查不到数据。sql复制到服务端看看是不是真的没有数据结果查到了数据sql和查询条件完全一样至少看着一样。首先排查是不是配置文件数据库连接错了或者schema配置错了。检查了多次都一样。是不是查询条件不一样导致的比如多了空格和本机日志参数对比完全一样应该没有空格。但是还是查不出问题。最后我只用一个参数查数据打印参数只有一个此时明显参数没有空格也知道这个参数肯定有数据但查询结果依然是0此时已经苦恼认为代码本机执行没问题服务执行有问题代码应该就没有问题很有可能是配置的问题。可是检查配置依然没有找出问题。找大模型排查也没找出问题关键是还给了错误的方向说sql肯定没问题大模型结果我发现每次解决问题长达几个小时这种问题一般都是大模型给错了方向。大模型并且还非常肯定的告诉你不用怀疑肯定不是这种词汇。问题解决最终是一直解决不了我就一直盯着这个sql发呆看着看着就突然开窍了。发现sql中使用到了两张表但只有一张表拼接了schema。至于为什么本机启动服务能查到数据因为本机的schema是publicpg数据库默认schema就是public拼接和不拼接效果一样。为什么dbeaver查到了数据可以看下我上面dbeaver截图框住的部分因为查询sql选中了数据库和schema所以没有拼接schema时就会使用选中的shcema拼接了schema就使用拼接的schema。mybatis xml 文件中拼接schema重新部署启动查到数据的截图如下可以看到结果是21条数据。总结这种涉及到shcema的数据库一定要注意使用的表拼接schema