强烈建议连接 oracle 数据库的 golang 用户使用这个库 https://github.com/sijms/go-ora

这个是纯 golang 编写的 oracle 驱动

也就是说不用装 instant client 了 !!!

我推测是通过抓包写的

之前的用于连接 oracle 两个库,都有些不方便的地方

  • github.com/godror/godror
    • 需要安装 instant client
    • 因为依赖 CGO,MacOS 无法跨平台编译 linux 程序,我每次是 git push 后,到 linux 平台拉代码编译
    • CentOS 6 不支持,因为 GLIBC 版本太低,服务器升级风险高
  • github.com/mattn/go-oci8
    • 需要写 OCI 配置文件
    • 需要安装 instant client

食用

需要使用 v2 版本

1
go get github.com/sijms/go-ora/v2

搭配 xorm 食用

xorm 官网上没写支持 go-ora 驱动,但是在国内的 gitea 仓库 README 上写了支持 go-ora

是 2月4日 的 commit 支持的,目前(2023年2月21日)还没有发布版本

https://gitea.com/xorm/xorm/commit/0c9963c6379477764ab4adbab74195f92d3b89dc

通过指定 commit 方式导入包

1
go get xorm.io/xorm@0c9963c6379477764ab4adbab74195f92d3b89dc

连接

连接串有稍许变动

godror

1
2
3
4
5
const driverName = "godror"

oralInfo = fmt.Sprintf("%s/%s@%s:%d/%s", user, password, host, port, dbname)

db, err := xorm.NewEngine(driverName, oralInfo)

go-ora

1
2
3
4
5
const driverName = "oracle"

oralInfo = fmt.Sprintf("oracle://%s:%s@%s:%d/%s", user, password, host, port, dbname)

db, err := xorm.NewEngine(driverName, oralInfo)