jdbc连接达梦数据库,read string from reader error
用jdbc连接达梦数据库的时候,当数据表中的字段类型为clob类型,且存储的内容过大时,提示了下面所示的错误:
reader string from reader error
Caused by: java.io.IOException: 连接尚未建立或已经关闭
at dm.jdbc.driver.DmdbReader.readFromClob(DmdbReader.java:277)
at dm.jdbc.driver.DmdbReader.read(DmdbReader.java:116)
at com.alibaba.fastjson.serializer.ClobSeriliazer.write(ClobSeriliazer.java:30)
后来,仔细排查下发现,该字段经jdbc查询后返回的结果类型为characterstream,所以以常规的string类型去获取这个值可能会报错,解决方案为在url后加clobAsString,示例如下:
jdbc:dm://host:port&clobAsString=true
达梦操作手册给出的具体解释为:
clob类型列调用resultSetMetaData的getColumnType()映射为
Types.VARCHAR 类型;默认 false ;取值(true/True,
false/False)