- 接続文字列を使用してデータベースの場所を特定する方法:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
connStr := "user=your_user password=your_password dbname=your_dbname host=your_host port=your_port sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
fmt.Println("データベースに接続できませんでした:", err)
return
}
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println("データベースに接続できませんでした:", err)
return
}
fmt.Println("データベースの場所:", db.Driver().(*pq.Driver).ConnInfo().Host)
}
- PostgreSQLのpg_stat_activityビューを使用してデータベースの場所を特定する方法:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
connStr := "user=your_user password=your_password dbname=your_dbname host=your_host port=your_port sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
fmt.Println("データベースに接続できませんでした:", err)
return
}
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println("データベースに接続できませんでした:", err)
return
}
rows, err := db.Query("SELECT inet_server_addr() AS address, inet_server_port() AS port")
if err != nil {
fmt.Println("データベースの場所を取得できませんでした:", err)
return
}
defer rows.Close()
if rows.Next() {
var address string
var port int
err = rows.Scan(&address, &port)
if err != nil {
fmt.Println("データベースの場所を取得できませんでした:", err)
return
}
fmt.Println("データベースの場所:", address, "ポート:", port)
} else {
fmt.Println("データベースの場所を取得できませんでした.")
}
}