当前位置: 首页 > article >正文

【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")
}


http://www.kler.cn/a/297611.html

相关文章:

  • CMake_CMD_01_add_custom_target() 是什么功能?
  • 14、Flink SQL 的 事件时间详解
  • 神经网络VS决策树
  • pdfmake生成pdf的使用
  • web开发:前端和后端
  • Python爬虫使用实例-wallpaper
  • 网络地址转换
  • 【软考中级攻略站】-软件设计师(5)- 软件工程
  • HiveServer2 启动时 datanucleus.schema.autoCreateTables 不生效的问题
  • 四数相加 II--力扣454
  • KUKA中级学习4:修改软件中机器人名字,纠正示教器时间,下载备份文件进示教器
  • k8s的配置管理
  • ubuntu 22.04 编译安装新内核
  • 【H2O2|全栈】更多关于HTML(1)HTML进阶(一)
  • NLP-新词挖掘
  • nginx HTTPS服务器配置
  • ubuntu24.01 利用samba(SMB)实现不同系统文件共享
  • 电脑pe是什么意思_电脑pe系统作用详细分析
  • springboot+vue+mybatis计算机毕业设计医护系统的设计与实现+PPT+论文+讲解+售后
  • 【Tip】父子组件传值和页面跳转传值方法(vue和uniapp)