Go 驱动连接 OceanBase 数据库
本文介绍 Go 代码示例如何通过驱动 Go-SQL-Driver/MySQL 连接并使用 OceanBase 数据库。
前提条件
确保本地已部署 Go 语言环境。
Go 驱动连接数据库
步骤一:获取数据库连接参数
参考 获取连接参数 文档,获取相应的租户连接参数,例如:
$ obclient -hxxx.xxx.xxx.xxx -P3306 -u a**** -p****** -Dtest
数据库连接参数包含了访问数据库所需的参数信息,在验证示例代码前,可通过数据库连接参数验证登录数据库,保证信息正确。
参数说明:
-h:OceanBase 数据库连接的域名。
-P:OceanBase 数据库连接端口,MySQL 模式租户默认是 3306。
-u:租户的连接账号。
-p:账号密码。
-D:数据库名称。
步骤二:安装 Go-SQL-Driver/MySQL
根据 Go 语言的不同版本,可以选择不同的安装方式。
通过 go get 安装(适用于Go V1.13 - V1.16)
安装命令如下:
$ go get -u github.com/go-sql-driver/mysql
关于 Go-SQL-Driver/MySQL
的详细信息,您可参考 Github。
通过 go install 安装
如果由于版本或网络的原因,无法通过 go get
命令安装时,可通过如下方法进行 go-sql-driver/mysql
安装。
进入
go/src
目录。$ cd /usr/local/go/src
重要/usr/local/go/src
需要替换成 Go 实际安装目录操作。克隆 github 中的
go-sql-driver/mysql
仓库。$ git clone https://github.com/go-sql-driver/mysql.git
通过
go install
进行安装。$ go install mysql
重要部分版本
go install
的默认执行目录可能不是/src
,可以通过go install
执行后的报错判断实际目录。例如,报错cannot find package "mysql" in: /usr/local/go/src/vendor/mysql
,则应该将mysql
文件夹放在/src/vendor
目录下再执行安装命令。
步骤三:编写示例代码
将下文编写示例文件test.go
,代码如下:
package main
import (
"database/sql"
"fmt"
"log"
_ "mysql"
//填写 go-sql-driver/mysql 安装的准确路径。如果安装在 src 目录下,可以直接填 "mysql"。
)
type Str struct {
Name string
}
func main() {
select_all()
}
func select_all() {
conn := "a****:******@tcp(xxx.xxx.xxx.xxx:3306)/test"
db, err := sql.Open("mysql", conn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err != nil {
log.Fatal(err)
}
fmt.Printf("success to connect OceanBase with go_mysql driver\n")
//创建表 t1
db.Query("create table t1(str varchar(256))")
//插入数据
db.Query("insert into t1 values ('Hello OceanBase')")
//查询数据
res, err := db.Query("SELECT * FROM t1")
//删除表 t1
db.Query("drop table t1")
if err != nil {
log.Fatal(err)
}
defer res.Close()
if err != nil {
log.Fatal(err)
}
for res.Next() {
var str Str
res.Scan(&str.Name)
fmt.Printf("%s\n", str.Name)
}
}
修改代码中的数据库连接参数。参考如下字段及拼接方法,对应的值,则取自步骤一获取的数据库连接参数。
conn := "{username}:{password}@tcp({hostname}:{port})/{dbname}"
参数说明:
username:取自
-u
参数,租户的连接账号。password:取自
-p
参数,账号密码。hostname:取自
-h
参数,OceanBase 数据库连接的域名。port:取自
-P
参数,OceanBase 数据库连接端口,MySQL 模式租户默认是 3306。dbname:取自
-D
参数,数据库名称。
示例如下:
conn := "a****:******@tcp(xxx.xxx.xxx.xxx:3306)/test"
步骤四:执行示例代码
代码编辑完成后,可以通过如下命令运行。
配置临时环境变量,根据 Go 语言实际安装路径填写。
$ export PATH=$PATH:/usr/local/go/bin
运行代码
通过 go run 直接运行 go 文件。
$ go run test.go
通过 go build 生成二进制文件。
$ go build test.go
运行 test。
$ ./test
运行后返回如下内容,说明数据库连接成功,示例语句正确执行。
success to connect OceanBase with go_mysql driver Hello OceanBase