前言
由于Oracle通常用于大型企业和特定行业而且具有独特的特性和复杂性,`golang`中我们比较易用的`gorm`,`ent`,`xorm`等orm库都不支持。本文选择了较为成熟的驱动库:`github.com/godror/godror`,该库相对`sijms/go-ora`较为复杂。目的
如图所示,`godror`虽然在编译时只需要安装 `gcc`(该过程本文不再演示),但在运行时却需要依赖 ODPI-C。一番折腾下来还是有些繁琐,本文将整个操作步骤记录下来,与需要的 Go 开发者分享。安装ODPI-C
说明文档:[2. Installing ODPI-C ](https://odpi-c.readthedocs.io/en/latest/user_guide/installation.html)下载地址:Oracle Instant Client Downloads
windows
+ 下载- 解压
- 配置环境变量
说明:
Linux(Ubuntu)
+ 下载包- 解压
root@DESKTOP-BB0KRFQ:/home/oracle# ls
instantclient-basic-linux.x64-23.5.0.24.07.zip
root@DESKTOP-BB0KRFQ:/home/oracle# unzip instantclient-basic-linux.x64-23.5.0.24.07.zip
- 配置环境变量
root@DESKTOP-BB0KRFQ:/mnt/c/Users/Administrator# vim ~/.bashrc
添加
export LD_LIBRARY_PATH=/home/oracle/instantclient_23_5:$LD_LIBRARY_PATH
使更改生效
source ~/.bashrc
依然报错
ERRO[0000] dbes dsn="test/test123@20.10.120.190:21521/helowin" err="ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: \"libaio.so.1: cannot open shared object file: No such file or directory\". See https://oracle.github.io/odpi/doc/installation.html#linux for help" fields.msg="连接失败" log_file="/mnt/d/projects/dbes/backend/internal/apiserver/store/database/driver/driver.go:52"
根据报错和查看oracle官网可知,还需要安装libaio1
apt-get update
apt-get install -y libaio1
驱动使用
```plain github.com/godror/godror ```代码:
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/godror/godror"
)
func main() {
// 数据库连接字符串
dsn := "user/password@host:port/service_name"
// 连接到数据库
db, err := sql.Open("godror", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 测试连接
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("成功连接到 Oracle 数据库!")
// 执行查询
rows, err := db.Query("SELECT column_name FROM table_name")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 处理查询结果
for rows.Next() {
var columnValue string
if err := rows.Scan(&columnValue); err != nil {
log.Fatal(err)
}
fmt.Println(columnValue)
}
// 检查查询过程中是否发生错误
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}
运行go run main.go
后已经可以正常使用
评论区