为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8
【操作系统】:Windows10
【CPU】: Intel E5 2695
【问题描述】*: 我从MySQL迁移到DM8,原始MySQL字段类型是TEXT,迁移后字段为VARCHAR(32767)(因为golang没有合适的xorm驱动,无法用CLOB类型),我在Linux下docker里启动一切正常,但是在Win10下启动DM8,则会报字段超长的错误。
ORM报错日志如下:
2022-10-24T13:58:54.218+0800 ERROR tcpsvr/handle.go:134 Insert agent 57670045893468 to db failed, Error -2665: 记录超长
stack info:
1). gitee.com/chunanyong/dm.(*dm_build_741).dm_build_774
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/zq.go:708
2). gitee.com/chunanyong/dm.(*dm_build_741).dm_build_730
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/zq.go:695
3). gitee.com/chunanyong/dm.(*dm_build_741).dm_build_733
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/zq.go:745
4). gitee.com/chunanyong/dm.(*dm_build_332).dm_build_372
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/a.go:247
5). gitee.com/chunanyong/dm.(*dm_build_332).Dm_build_439
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/a.go:452
6). gitee.com/chunanyong/dm.(*DmStatement).executeInner
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/u.go:882
7). gitee.com/chunanyong/dm.(*DmStatement).exec
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/u.go:392
8). gitee.com/chunanyong/dm.(*DmStatement).execContext
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/u.go:412
9). gitee.com/chunanyong/dm.(*DmConnection).execContext
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/m.go:572
10). gitee.com/chunanyong/dm.(*DmConnection).ExecContext
/usr/local/go_code/myCode/cell/vendor/gitee.com/chunanyong/dm/m.go:289
11). database/sql.ctxDriverExec
/usr/local/golang/go/src/database/sql/ctxutil.go:31
12). database/sql.(*DB).execDC.func2
/usr/local/golang/go/src/database/sql/sql.go:1577
13). database/sql.withLock
/usr/local/golang/go/src/database/sql/sql.go:3294
14). database/sql.(*DB).execDC
/usr/local/golang/go/src/database/sql/sql.go:1572
15). database/sql.(*DB).exec
/usr/local/golang/go/src/database/sql/sql.go:1557
16). database/sql.(*DB).ExecContext
/usr/local/golang/go/src/database/sql/sql.go:1535
17). github.com/go-xorm/xorm.(*Session).exec
/usr/local/go_code/myCode/cell/vendor/www.github.com/go-xorm/xorm/session_raw.go:194
18). github.com/go-xorm/xorm.(*Session).innerInsert
/usr/local/go_code/myCode/cell/vendor/www.github.com/go-xorm/xorm/session_insert.go:505
19). github.com/go-xorm/xorm.(*Session).Insert
/usr/local/go_code/myCode/cell/vendor/www.github.com/go-xorm/xorm/session_insert.go:83
20). gitlab.eoitek.net/DC/cell/repository/dao.(*AgentDAO).InsertSelective
/usr/local/go_code/myCode/cell/repository/dao/agent_dao.go:158
21). gitlab.eoitek.net/DC/cell/repository/dm.(*DMCompatiblePersistentService).InsertAgent
/usr/local/go_code/myCode/cell/repository/dm/dm.go:72
22). gitlab.eoitek.net/DC/cell/tcpsvr.doEnroll
/usr/local/go_code/myCode/cell/tcpsvr/handle.go:132
23). gitlab.eoitek.net/DC/cell/tcpsvr.(*TcpSvr).doRequest
/usr/local/go_code/myCode/cell/tcpsvr/tcpsvr.go:231
24). gitlab.eoitek.net/DC/cell/tcpsvr.(*TcpSvr).onRequest.func1
/usr/local/go_code/myCode/cell/tcpsvr/tcpsvr.go:187
25). runtime.goexit
/usr/local/golang/go/src/runtime/asm_amd64.s:1371
因为在Linux下使用是正常的,因此不知道这是Windows的兼容问题,还是其他的未知原因,不知是否为风险点,因此请大佬们指教。
建库参数是否一致,尤其页大小,字符集。
改了下xorm源码,已解决。
使用select id_code查询两边的数据库版本,可能是版本不一致的问题