当驱动程序具有相同名称时,在 Golang 中选择运行时 SQL 驱动程序

我想知道当这两个驱动程序具有相同名称时,是否有一种方法或投影模式能够在运行时在 Golang 中选择 SQL 驱动程序。我想使用环境变量在 HTTP ClickHouse 驱动程序 ( https://github.com/mailru/go-clickhouse ) 和本机 TCP ClickHouse 驱动程序 ( https://github.com/ClickHouse/clickhouse-go ) 之间切换。


import(

//HTTP driver

_ "github.com/mailru/go-clickhouse"

)


func getHttpCHConnection() (*sql.DB, error) {

   ...

   db, err := sql.Open("clickhouse", clkConnUrl)

import(

//Native driver

_ "github.com/ClickHouse/clickhouse-go"

)


func getNativeCHConnection() (*sql.DB, error) {

    ...

    db, err := sql.Open("clickhouse", clkConnUrl)

通常,它会导致“恐慌:sql:为驱动程序 clickhouse 调用两次注册”。有可能避免这种情况吗?


皈依舞
浏览 138回答 1
1回答

牧羊人nacy

由于 mailru/go-clickhouse 的第 2 版可以同时使用它们,作者已将驱动程序名称更改为chhttp:https ://github.com/mailru/go-clickhouse/issues/151
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go