离开你是傻是对是错
是看破是软弱
这结果是爱是恨或者是什么
如果是种解脱
怎么会还有眷恋在我心窝
那么爱你为什么
🎵 黄品源/莫文蔚《那么爱你为什么》
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/ClickHouse/clickhouse-go/v2"
)
func main() {
// 确保使用 HTTP 协议和 8123 端口
conn, err := clickhouse.Open(&clickhouse.Options{
Protocol: clickhouse.HTTP, // 使用 HTTP 协议
Addr: []string{"192.168.2.202:8123"}, // 确保使用 HTTP 端口 8123
Auth: clickhouse.Auth{
Database: "shujujiance", // 数据库名称
Username: "default", // 用户名
Password: "", // 密码
},
DialTimeout: 10 * time.Second,
MaxOpenConns: 5,
MaxIdleConns: 5,
ConnMaxLifetime: time.Hour,
})
if err != nil {
log.Fatalf("Failed to create connection: %v", err)
}
// Ping ClickHouse 服务器,确保连接成功
ctx := context.Background()
if err := conn.Ping(ctx); err != nil {
log.Fatalf("Failed to ping ClickHouse: %v", err)
}
fmt.Println("Connected to ClickHouse via HTTP!")
// 执行一个简单的查询
rows, err := conn.Query(ctx, "SELECT number FROM system.numbers LIMIT 5")
if err != nil {
log.Fatalf("Failed to execute query: %v", err)
}
defer rows.Close()
// 遍历查询结果
for rows.Next() {
var number uint64
if err := rows.Scan(&number); err != nil {
log.Fatalf("Failed to scan result: %v", err)
}
fmt.Printf("Number: %d\n", number)
}
// 检查是否有错误
if err := rows.Err(); err != nil {
log.Fatalf("Error during result iteration: %v", err)
}
fmt.Println("Query executed successfully")
}