注册

使用达梦提供的go驱动连接达梦查询数据,偶尔会异常

蜡笔😄没小新 2025/04/25 105 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:x86
【CPU】:
【问题描述】*:
time="2025-04-24T23:30:05Z" level=info msg="Starting dmdb_exporter 0.0.0.dev" source="main.go:400"
time="2025-04-24T23:30:05Z" level=info msg="Successfully loaded default metrics from: default-metrics.toml" source="main.go:411"
time="2025-04-24T23:30:05Z" level=info msg="No custom metrics defined." source="main.go:425"
time="2025-04-24T23:30:11Z" level=error msg="Error scraping for tablespace _ map[free_percent:Generic counter metric of tablespaces free percent in DmService. free_space:Generic counter metric of tablespaces free space MB in DmService. max_free_percent:Generic counter metric of tablespaces max free percent in DmService. max_space:Generic counter metric of tablespaces max space MB in DmService. total_space:Generic counter metric of tablespaces total space MB in DmService.] : Error -6103: 除0错误\nstack info:\n 1). dmdb_exporter/vendor/dm.(*dm_build_1099).dm_build_1132\n \t/go/src/dmdb_exporter/vendor/dm/zr.go:707\n 2). dmdb_exporter/vendor/dm.(*dm_build_1099).dm_build_1088\n \t/go/src/dmdb_exporter/vendor/dm/zr.go:694\n 3). dmdb_exporter/vendor/dm.(*dm_build_1099).dm_build_1091\n \t/go/src/dmdb_exporter/vendor/dm/zr.go:744\n 4). dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_730\n \t/go/src/dmdb_exporter/vendor/dm/a.go:260\n 5). dmdb_exporter/vendor/dm.(*dm_build_690).Dm_build_757\n \t/go/src/dmdb_exporter/vendor/dm/a.go:351\n 6). dmdb_exporter/vendor/dm.(*dm_build_690).Dm_build_775\n \t/go/src/dmdb_exporter/vendor/dm/a.go:372\n 7). dmdb_exporter/vendor/dm.(*DmConnection).executeInner\n \t/go/src/dmdb_exporter/vendor/dm/n.go:201\n 8). dmdb_exporter/vendor/dm.(*DmConnection).queryContext\n \t/go/src/dmdb_exporter/vendor/dm/n.go:641\n 9). dmdb_exporter/vendor/dm.(*DmConnection).QueryContext\n \t/go/src/dmdb_exporter/vendor/dm/n.go:302\n 10). database/sql.ctxDriverQuery\n \t/usr/local/go/src/database/sql/ctxutil.go:48\n 11). database/sql.(*DB).queryDC.func1\n \t/usr/local/go/src/database/sql/sql.go:1759\n 12). database/sql.withLock\n \t/usr/local/go/src/database/sql/sql.go:3437\n 13). database/sql.(*DB).queryDC\n \t/usr/local/go/src/database/sql/sql.go:1754\n 14). database/sql.(*DB).query\n \t/usr/local/go/src/database/sql/sql.go:1737\n 15). database/sql.(*DB).QueryContext\n \t/usr/local/go/src/database/sql/sql.go:1710\n 16). main.GeneratePrometheusMetrics\n \t/go/src/dmdb_exporter/main.go:334\n 17). main.ScrapeGenericValues\n \t/go/src/dmdb_exporter/main.go:304\n 18). main.ScrapeMetric\n \t/go/src/dmdb_exporter/main.go:257\n 19). main.(*Exporter).scrape.func2\n \t/go/src/dmdb_exporter/main.go:226\n 20). runtime.goexit\n \t/usr/local/go/src/runtime/asm_amd64.s:1571\n" source="main.go:227"
<nil>
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0xf8 pc=0x82425d]

goroutine 176 [running]:
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_720.func1()
/go/src/dmdb_exporter/vendor/dm/a.go:111 +0xd4
panic({0x96fbc0, 0xf04ab0})
/usr/local/go/src/runtime/panic.go:838 +0x207
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_952(...)
/go/src/dmdb_exporter/vendor/dm/a.go:816
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_720(0xc0007b4180, {0xae99d8, 0xc000e981c0})
/go/src/dmdb_exporter/vendor/dm/a.go:154 +0x43d
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_730(0x1?, {0xae99d8, 0xc000e981c0})
/go/src/dmdb_exporter/vendor/dm/a.go:250 +0x49
dmdb_exporter/vendor/dm.(*dm_build_690).Dm_build_752(0xc0007b4180, 0x0)
/go/src/dmdb_exporter/vendor/dm/a.go:341 +0x6e
dmdb_exporter/vendor/dm.(*DmStatement).free(0xc000e10280)
/go/src/dmdb_exporter/vendor/dm/v.go:510 +0x9e
dmdb_exporter/vendor/dm.(*DmStatement).close(0xc0007b4180?)
/go/src/dmdb_exporter/vendor/dm/v.go:360 +0x58
dmdb_exporter/vendor/dm.(*DmConnection).executeInner(0xc0002e6780, {0xc00019796a, 0x17d}, 0x1)
/go/src/dmdb_exporter/vendor/dm/n.go:205 +0x8ef
dmdb_exporter/vendor/dm.(*DmConnection).queryContext(0xc0002e6780, {0xae6178, 0xc00084a600}, {0xc00019796a, 0x17d}, {0xf622c0, 0x0, 0x0})
/go/src/dmdb_exporter/vendor/dm/n.go:641 +0x231
dmdb_exporter/vendor/dm.(*DmConnection).QueryContext(0x4379d2?, {0xae6178?, 0xc00084a600?}, {0xc00019796a?, 0x4?}, {0xf622c0?, 0x8?, 0xc0007777b0?})
/go/src/dmdb_exporter/vendor/dm/n.go:302 +0x3e
database/sql.ctxDriverQuery({0xae6178?, 0xc00084a600?}, {0x7fc2d2156f98?, 0xc0002e6780?}, {0x0?, 0x0?}, {0xc00019796a?, 0x0?}, {0xf622c0, 0x0, ...})
/usr/local/go/src/database/sql/ctxutil.go:48 +0xe5
database/sql.(*DB).queryDC.func1()
/usr/local/go/src/database/sql/sql.go:1759 +0x175
database/sql.withLock({0xae3728, 0xc0008c7050}, 0xc0007779e8)
/usr/local/go/src/database/sql/sql.go:3437 +0x8c
database/sql.(*DB).queryDC(0xc1fad0415f438901?, {0xae6178, 0xc00084a600}, {0x0, 0x0}, 0xc0008c7050, 0xc000e18000, {0xc00019796a, 0x17d}, {0x0, ...})
/usr/local/go/src/database/sql/sql.go:1754 +0x211
database/sql.(*DB).query(0x0?, {0xae6178, 0xc00084a600}, {0xc00019796a, 0x17d}, {0x0, 0x0, 0x0}, 0x40?)
/usr/local/go/src/database/sql/sql.go:1737 +0xfd
database/sql.(*DB).QueryContext(0xae6140?, {0xae6178, 0xc00084a600}, {0xc00019796a, 0x17d}, {0x0, 0x0, 0x0})
/usr/local/go/src/database/sql/sql.go:1710 +0xda
main.GeneratePrometheusMetrics(0xc00029b4d0?, 0xc000777d50, {0xc00019796a, 0x17d})
/go/src/dmdb_exporter/main.go:334 +0x1ae
main.ScrapeGenericValues(0x0?, 0x0?, {0xc000258738?, 0x0?}, {0xc00029a610?, 0x0?, 0xc00078de50?}, 0x8ff20b?, 0xc00078de50?, {0x0, ...}, ...)
/go/src/dmdb_exporter/main.go:304 +0xe5
main.ScrapeMetric(0x0?, 0x0?, {{0xc000258738, 0xe}, {0xc00029a610, 0x1, 0x1}, 0xc00027ca80, 0x0, {0x0, ...}, ...})
/go/src/dmdb_exporter/main.go:257 +0xfa
main.(*Exporter).scrape.func2()
/go/src/dmdb_exporter/main.go:226 +0x565
created by main.(*Exporter).scrape
/go/src/dmdb_exporter/main.go:206 +0x532

这个是报错信息,select b.NAME tablespace_name,
sum(a.bytes)/1024/1024 as total_space,
sum(MAXBYTES/1024/1024) as max_space ,
sum(USER_BYTES)/1024/1024 as free_space,
100 - ROUND(((sum(a.bytes)-sum(USER_BYTES))||'.0')/sum(MAXBYTES),2)*100 as max_free_percent,
100 - ROUND(((sum(a.bytes)-sum(USER_BYTES))||'.0')/sum(a.bytes),2)*100 as free_percent
from dba_data_files a,
v$tablespace b
where a.tablespace_name = b.name
group by b.NAME,
tablespace_name;这个是我的查询sql,怎么可以不panic,跳过这个错误

回答 0
暂无回答
扫一扫
联系客服