【DM版本】:DM Database Server 64 V8 03134283968-20230103-178822-20033
【操作系统】:麒麟v10
【CPU】:
【问题描述】*:
使用golang查询达梦数据库text字段时,短字段可以读出,2849长度的字段读出为空字符串。
直接使用string 无法读出数据,遂使用dm.DmClob。使用clob读取,getLength得到的长度是正确,但是ReadString失败,报错EOF。
短的数据是可以直接读出的
代码如下:
// dic_value是TEXT字段
var preSql = "SELECT dic_value FROM i_data_dic WHERE dic_type=%s and dic_name=%s"
rows, err = db.Query(fmt.Sprintf(preSql, "?", "?"), dicType, dicName)
for rows.Next() {
var tmp dm.DmClob
rows.Scan(&tmp)
//长度正确
len,_ := tmp.GetLength()
fmt.Printf("%v %v\n",tmp, len)
value ,err = tmp.ReadString(1,int(len))
//报错EOF
fmt.Print(err)
if value != "" {
break
}
}
问题已解决,应该是驱动版本过低导致的,更新最新驱动版本后问题修复