为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.1.2.84
【操作系统】:16.04.1-Ubuntu
【CPU】:x86_64
【问题描述】*:golang驱动可以获取小的blob,但是不能获取较大的blob,例如长度超过1028
你好,读取程序需要调整一下:
rows, err := db.Query(sql)
defer rows.Close()
for rows.Next() {
var FeatureBin dm.DmBlob
if err = rows.Scan(&FeatureBin); err != nil {
fmt.Println(err)
}
var tmpLen int64
tmpLen, _ = FeatureBin.GetLength()
var b = make([]byte, tmpLen)
len, _ := FeatureBin.Read(b)
fmt.Printf("len: %d, data: %x\n", len, b)
以下测试结果基于版本(p.go)
// 发版标记
var version = “8.1.2.18”
var build_date = “2021.06.02”
var svn = “6675”
超过1028字符的blob类型可以正常获取,执行符合预期,结果如下:
len: 800, data: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…(800长度)
len: 1600, data: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb…(1600长度)
至于调试过程中出现的那个data部分显示问题,可能是blob类型读取策略,在确定要获取数据时,才会传递。不影响正常结果。
https://eco.dameng.com/docs/zh-cn/app-dev/go-go.html