当驱动程序具有相同的名称时,在 Golang 中的运行时选择一个 SQL 驱动程序
Choose an SQL driver at runtime in Golang when drivers have the same name
我想知道当这两个驱动程序具有相同的名称时,是否有一种方法或投影模式能够在运行时在 Golang 中选择 SQL 驱动程序。我想使用环境变量在 HTTP ClickHouse 驱动程序 (https://github.com/mailru/go-clickhouse) and native TCP ClickHouse driver (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 调用注册两次”。有没有可能避免这种情况?
从 mailru/go-clickhouse 的第 2 版开始可以同时使用它们,作者已将驱动程序名称更改为 chhttp
:https://github.com/mailru/go-clickhouse/issues/151
我想知道当这两个驱动程序具有相同的名称时,是否有一种方法或投影模式能够在运行时在 Golang 中选择 SQL 驱动程序。我想使用环境变量在 HTTP ClickHouse 驱动程序 (https://github.com/mailru/go-clickhouse) and native TCP ClickHouse driver (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 调用注册两次”。有没有可能避免这种情况?
从 mailru/go-clickhouse 的第 2 版开始可以同时使用它们,作者已将驱动程序名称更改为 chhttp
:https://github.com/mailru/go-clickhouse/issues/151