【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")
}
相关推荐
早日退休!!!24 分钟前
《数据结构选型指南》笔记
数据结构·数据库·oracle
xcLeigh30 分钟前
KES数据库性能优化实战
数据库·sql·性能优化·sql优化·数据性能
阿正呀32 分钟前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
yoyo_zzm38 分钟前
Laravel9.x新特性全解析
数据库·mysql·nginx
2501_901200531 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
m0_495496412 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
forEverPlume3 小时前
PHP怎么使用Eloquent Attribute Composition属性组合_Laravel通过组合构建复杂属性【方法】
jvm·数据库·python
2301_809204703 小时前
mysql在docker容器中如何部署_利用docker-compose快速启动
jvm·数据库·python
虹科网络安全3 小时前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(上)
数据库·redis·bootstrap
阿坤带你走近大数据3 小时前
怎么查看当前oracle库下的表空间temp大小或者默认大小
数据库·oracle