【Go】Golang连接数据库使用HTTP协议


离开你是傻是对是错

是看破是软弱

这结果是爱是恨或者是什么

如果是种解脱

怎么会还有眷恋在我心窝

那么爱你为什么

🎵 黄品源/莫文蔚《那么爱你为什么》


复制代码
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")
}
相关推荐
昊昊该干饭了10 分钟前
【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路
数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
孙同学_39 分钟前
【MySQL】004.MySQL数据类型
android·数据库·mysql
CodeJourney.1 小时前
基于DeepSeek与Excel的动态图表构建:技术融合与实践应用
数据库·人工智能·算法·excel
264玫瑰资源库1 小时前
集结号海螺捕鱼服务器调度与房间分配机制详解:六
数据库
不辉放弃2 小时前
MySQL存储过程
java·数据库·sql
宝耶2 小时前
实验一sql
数据库·sql
flying jiang2 小时前
MySQL 按照日期统计记录数量
数据库
LUCIAZZZ3 小时前
说一下Redis的发布订阅模型和PipeLine
java·数据库·redis·缓存·操作系统
海上彼尚3 小时前
使用Autocannon.js进行HTTP压测
开发语言·javascript·http
手握风云-3 小时前
MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典(一)
数据库·mysql