ShardingResultSetMetaData.getColumnCount()没有返回实际查询的列数

方便更快捷的说明问题,可以按需填写(可删除)

使用环境:

5.0.0

场景、问题:

ShardingResultSetMetaData.getColumnCount()


这个地方需要怎么配置或者其他操作,才能每次返回查出的列数而不是缓存的列数,不然数据库表字段顺序调整,删除字段都有问题

已进行操作:

表中间新增字段导致查询最后一个字段值丢失

现状:

数据库表新加字段、调整字段顺序查询异常

看起来是执行 DDL 没有通过 SS 执行导致的。

有以下解决方案:

  1. 通过 SS 执行 DDL,元数据会自动更新
  2. 如果在底层 DB 执行了 DDL,在 SS-Proxy 执行 Refresh table metadata tableName,主动触发元数据刷新
  3. 如果只使用了 SS-JDBC,目前无法执行 DistSQL,只能重启或者是和 Proxy 组成集群模式,由 Proxy 端执行 Refresh 语句。

以上三种方式都可以。

是的 通过底层db在表中间新增了一个字段,机器没重启,导致代码里面最后一个字段值丢了

在上周的发版中也出现了类似这个问题,出现了IndexOutOfBounds Exception这个异常,你提到的三种方法都需要有运维权限,可能运维也不知道怎么具体处理,所以想问问从开发者的角度有什么比较的处理方法吗,我们现在是考虑将所有的select *都改写成select所有具体字段

京ICP备2021015875号