このトピックでは、Go MySQL Driver を使用して OceanBase データベースに接続し、使用する方法について説明します。
前提条件
コンピューターに Go 環境がデプロイされていること。
Go MySQL Driver を使用してデータベースに接続する
手順 1: データベース接続パラメーターを取得する
詳細については、「接続パラメーターを取得する」をご参照ください。例:
$ obclient -hxxx.xxx.xxx.xxx -P3306 -u a**** -p****** -Dtestデータベース接続パラメーターは、データベースへのアクセスに必要な情報を指定します。サンプルコードで使用する前に、データベースにログオンしてデータベース接続パラメーターを確認できます。
オプション:
-h: 接続先の OceanBase データベースのドメイン名。
-P: OceanBase データベースに接続するためのポート。デフォルトでは、MySQL モードではポート 3306 です。
-u: テナントアカウント。
-p: アカウントパスワード。
-D: データベース名。
手順 2: Go-SQL-Driver/MySQL をインストールする
Go 言語のバージョンに基づいて、さまざまな方法を使用して Go MySQL Driver をインストールできます。
go get コマンドを実行する (Go 1.13 ~ 1.16 のみ)
Go 1.13 ~ 1.16 を使用している場合は、次のコマンドを実行して Go MySQL Driver をインストールできます。
$ go get -u github.com/go-sql-driver/mysqlGo-SQL-Driver/MySQL の詳細については、GitHub を参照してください。
go install コマンドを実行する
バージョンまたはネットワークの問題により go get コマンドを使用できない場合は、次の手順を実行して Go MySQL Driver をインストールできます。
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.gitgo installコマンドを実行します。$ go install mysql重要一部の Go バージョンでは、
/srcディレクトリでgo installコマンドを実行できません。go installコマンドの実行後に報告されるエラーに基づいて、正しいディレクトリを特定できます。たとえば、cannot find package "mysql" in: /usr/local/go/src/vendor/mysqlというエラーが報告された場合は、mysql フォルダーを/src/vendorディレクトリに配置してから、go install コマンドを実行する必要があります。
手順 3: サンプルコードを記述する
次の test.go サンプルファイルは参考用です。
package main
import (
"database/sql"
"fmt"
"log"
_ "mysql"
// Go MySQL Driver のインストールパスを指定します。/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)
}
}
コード内のデータベース接続パラメーターを変更します。次のパラメーターと形式を参照してください。パラメーター値は手順 1 で取得します。
conn := "{username}:{password}@tcp({hostname}:{port})/{dbname}"パラメーター:
username: テナントアカウント。
-uオプションに対応します。password: テナントアカウントのパスワード。
-pオプションに対応します。hostname: 接続先の OceanBase データベースのドメイン名。
-hオプションに対応します。port: OceanBase データベースに接続するためのポート。
-Pオプションに対応します。デフォルトでは、MySQL モードではポート 3306 です。dbname: データベース名。
-Dオプションに対応します。
サンプルコード:
conn := "a****:******@tcp(xxx.xxx.xxx.xxx:3306)/test"手順 4: サンプルコードを実行する
コードを編集した後、次のコマンドを実行します。
Go パッケージの実際のインストールパスに従って、一時環境変数を構成します。
$ export PATH=$PATH:/usr/local/go/binコードを実行する
go run コマンドを実行して go ファイルを実行します。
$ go run test.gogo build コマンドを実行してバイナリファイルを生成します。
$ go build test.gotest を実行します。
$ ./test
次の結果が返された場合、データベースは接続され、サンプル文は正しく実行されています。
success to connect OceanBase with go_mysql driver Hello OceanBase