【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")
}
相关推荐
treacle田4 分钟前
达梦数据库-数据库主备集群更改实例目录及相关目录步骤-记录总结
数据库·达梦数据库主备集群更改实例目录
会编程的土豆33 分钟前
GORM 标签详解(数据库字段映射核心)
数据库·gorm
KaMeidebaby36 分钟前
卡梅德生物技术快报|真核蛋白表达信号肽筛选实验全流程复盘
服务器·前端·数据库·人工智能·算法
malog_1 小时前
Milvus向量数据库:AI时代的搜索革命
数据库·人工智能·后端·milvus
胡耀超1 小时前
《设计数据密集型应用》(DDIA, 2nd ed.) 心智模型导览——《Designing Data-Intensive Applications》书介绍导航
大数据·数据库·分布式·ai·架构·数据
ai安歌1 小时前
鸿蒙PC:Qt适配OpenHarmony实战【人名录】:单机联系人卡片,不读系统通讯录也能演示详情联动
数据库·qt·harmonyos
夏贰四1 小时前
数据库管理有哪些核心要点?数据库管理该如何规范落地?
大数据·数据库·数据库管理·数据库管理员
龙之叶1 小时前
Android 12:在 ActivityStarter 层拦截分享、搜索与 HTTP 外链
android·chrome·http
彦为君2 小时前
JavaSE-11-ByteBuffer(NIO核心组件)
java·开发语言·前端·数据库·后端·spring·nio
2301_803538952 小时前
数据分析中count函数怎么用更高效
数据库·oracle