为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8
【操作系统】:win10
【CPU】:
【问题描述】*:
CREATE TABLE t_cfg_test (
cfg_id int NOT NULL,
cfg_key varchar(64),
cfg_value text,
cfg_version bigint DEFAULT 0,
PRIMARY KEY (cfg_id)
);
如上一个表有个字段是text类型,里面有两条数据,text字段的value值均超过2000个字符
读取第一条记录的值没问题,读第二条的字段值返回错误说表空间处于脱机状态,查询表空间状态确定是联机状态
不知道是有什么限制吗?
现在确定的是只能读取一条记录,不管读哪条记录。错误信息如下:
使用的go语言,测试代码如下:
package main import ( "log" "strconv" "time" "database/sql" "dm" ) var ( testDB *sql.DB ) //连接数据库 func init() { var err error testDB, err = sql.Open("dm", "dm://SYSDBA:dameng_test@localhost:5238") if err != nil { log.Fatal("open test error:", err) } log.Println("open test ok:", testDB) testDB.SetMaxOpenConns(10) testDB.SetMaxIdleConns(5) testDB.SetConnMaxLifetime(1 * time.Minute) } type Cfg struct { ID string Key string Value string Version int64 } func ListCfg() { cfgs := make([]*Cfg, 0) query := "select cfg_id, cfg_key, cfg_value, cfg_version from t_cfg_test" rs, err := testDB.Query(query) if err != nil { log.Fatal("query data error:", err) } defer rs.Close() for rs.Next() { var cfg Cfg var cfgValue dm.DmClob e := rs.Scan(&cfg.ID, &cfg.Key, &cfgValue, &cfg.Version) if e != nil { log.Fatal("read cfg error:", e) } cfg.Value, e = readClob2Str(&cfgValue) if e != nil { log.Fatal("read clob value error:", e) } cfgs = append(cfgs, &cfg) } log.Println("list cfg ok. get records:", cfgs) return } func readClob2Str(clobStr *dm.DmClob) (str string, err error) { lenValue64, err := clobStr.GetLength() if err != nil { return } lenValueStr := strconv.FormatInt(lenValue64, 10) lenValue, _ := strconv.Atoi(lenValueStr) str, err = clobStr.ReadString(1, lenValue) return } func main() { ListCfg() }