Go 驱动连接 OceanBase 数据库

更新时间: 2023-07-07 11:07:13

本文介绍 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 安装。

  1. 进入 go/src 目录。

    $ cd /usr/local/go/src 
    重要

    /usr/local/go/src 需要替换成 Go 实际安装目录操作。

  2. 克隆 github 中的 go-sql-driver/mysql 仓库。

    $ git clone https://github.com/go-sql-driver/mysql.git 
  3. 通过 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"

步骤四:执行示例代码

代码编辑完成后,可以通过如下命令运行。

  1. 配置临时环境变量,根据 Go 语言实际安装路径填写。

    $ export PATH=$PATH:/usr/local/go/bin
  2. 运行代码

    1. 通过 go run 直接运行 go 文件。

      $ go run test.go
    2. 通过 go build 生成二进制文件。

      $ go build test.go

      运行 test。

      $ ./test
  3. 运行后返回如下内容,说明数据库连接成功,示例语句正确执行。

    success to connect OceanBase with go_mysql driver
    Hello OceanBase
阿里云首页 云数据库 OceanBase 相关技术圈