Go使用clickhouse-go *** 作本地ClickHouse io timeout 问题小结

Go使用clickhouse-go *** 作本地ClickHouse io timeout 问题小结,第1张

问题描述

最近在使用 "github.com/ClickHouse/clickhouse-go" 这个库 *** 作ClickHouse,为了验证程序本地通过docker启了一个ClickHouse,并将端口8123映射出来。

参考clickhouse-go的github上example编写程序,运行时一直报错:

[clickhouse][dial] secure=false, skip_verify=false, strategy=random, ident=1, server=0 -> [::1]:8123
[clickhouse][connect=1][hello] -> Golang SQLDriver 1.1.54213
[clickhouse][connect=1][connect] read error: read tcp [::1]:49513->[::1]:8123: i/o timeout
runtime error: invalid memory address or nil pointer dereference

原因

程序中ClickHouse端口访问错误。

    ……	
    fmt.Println("Clickhouse初始化...")
	connect, err := sql.Open("clickhouse", "tcp://localhost:8123?debug=true")
	if err != nil {
		log.Fatal(err)
	}
    ……

ClickHouse提供两个网络端口:

HTTP 默认8123TCP 默认9000

而我之前用Java开发时,官方的JDBC使用的就是8123端口,也是基于HTTP实现的。对clickhouse不熟悉因此访问了错误的端口。

解决

重新启动clickhouse容器,并将9000端口暴露出来,go程序中地址也改成 "tcp://localhost:9000?debug=true"

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存