golang 连接oracle 11g数据库-2021完美解决方案-遇到的坑与如何解决-No package 'oci8' found-没有oci.h

Golang
444
0
0
2022-05-07

golang 连接oracle 11g数据库-2021完美解决方案-遇到的坑与如何解决-No package 'oci8' found-没有oci.h

首先看github 包

github.com/wendal/go-oci8

那么这里记录下遇到的问题

1. go get 执行报错

执行 go get github.com/Kylelkh/go-oci8

如图:

Go

这里也可以看到 我执行了,很多次…

解决: 不需要解决,就是报错的.

没关系,代码会下载下来

在你的 gopath 下的 src 下的文件夹里.

如图:

Go

2. 继续 修改oci8.pc文件

注意 这github 注释标题不太清楚.

下载好,弄好,需要修改 文件的 目录信息的

golang 连接oracle 11g数据库-遇到的坑与如何解决-No package 'oci8' found

自行根据自己情况修改.

不修改直接执行,就报错

因为你盘符对不上,你的安装位置对不上.

错误会提示如下:

# github.com/Kylelkh/go-oci8
F:\work\go\src\src\github.com\Kylelkh\go-oci8\oci8.go:4:10: fatal error: oci.h: No such file or directory
 #include <oci.h>^~~~~~~
compilation terminated.

golang 连接oracle 11g数据库-遇到的坑与如何解决-No package 'oci8' found

发布一下改完之后 与 改之前的对比

改完之后

# Package Information for pkg-config

prefix=F:/work/go/instantclient_19_11
exec_prefix=F:/work/go/instantclient_19_11
libdir=${exec_prefix}
includedir=${prefix}/sdk/include/

Name: OCI
Description: Oracle database engine
Version: 11.2
Libs: -L${libdir} -loci
Libs.private: 
Cflags: -I${includedir}

改之前的原版

# Package Information for pkg-config

prefix=C:/instantclient_11_2
exec_prefix=C:/instantclient_11_2
libdir=${exec_prefix}
includedir=${prefix}/sdk/include/

Name: OCI
Description: Oracle database engine
Version: 11.2
Libs: -L${libdir} -loci
Libs.private: 
Cflags: -I${includedir}

如果执行go get 遇到错误 oci.h

 github.com/Kylelkh/go-oci8
F:\work\go\src\src\github.com\Kylelkh\go-oci8\oci8.go:4:10: fatal error: oci.h: No such file or directory
 #include <oci.h>^~~~~~~
compilation terminated.

则注意,你是不是路径写错了.

这里注意两点

  1. 路径
  2. 反斜杠问题. win中用的是/ 这个斜杠

执行成功,完美撒花

golang 连接oracle 11g数据库-遇到的坑与如何解决-No package 'oci8' found-没有oci.h

整理来自其他同学的笔记

//假设的GOPATH指向C:\gohome

0. 执行 go get github.com/wendal/go-oci8 ,然后肯定是报错了,没关系,代码会下载下来.

1. 首先,你需要安装mingw到C:\mingw

2. 然后,到Oracle官网,下载OCI及其SDK,解压到instantclient_11_2 -- 当前最新版

3. 从我的go-oci8库的windows文件夹,拷贝pkg-config.exe到C:\mingw\bin\,拷贝oci8.pc到C:\mingw\lib\pkg-config

4. 设置环境变量 PATH ,值为 原有PATH;C:\instantclient_11_2;C:\mingw\bin;

5. 设置环境变量 PKG_CONFIG_PATH,值为 C:\mingw\lib\pkg-config

6. 接下来,就最重要的,就是再执行一次,这次应该能成功的: go get github.com/wendal/go-oci8

7. 测试一下:

cd %GOPATH%/src/github.com/wendal/go-oci8/example

go run oracle.go

#提醒一句, oracle.go里面的写的密码是system/123456, 实例名XE