Go连接oracle驱动,Go语言连接Oracle数据库的方法
发布日期:2022-02-10 01:26:36 浏览次数:9 分类:技术文章

本文共 2718 字,大约阅读时间需要 9 分钟。

首先交代一下运行环境和工具版本:

WIN10

MINGW64

ORACLEINSTANCCLIENT_18_3 x64

Jetbrins Goland

编译阶段:

1. exec: "gcc": executable file not found in %PATH%

2. exec: "pkg-config": executable file not found in %PATH%

3. cannot use (**_Ctype_struct_OCIServer)(unsafe.Pointer(&conn.svc))

(type **_Ctype_struct_OCIServer) as type **_Ctype_struct_OCISvcCtx

in argument to func literal

运行阶段:

1. Process finished with exit code -1073741701 (0xC000007B)

2. exit status 3221225595

开始

一、下载ORACLEINSTANCCLIENT 和对应的SDK

下载地址:https://www.oracle.com/technetwork/topics/winx64soft-089540.html

我选用了18.3 x64的版本,能向下兼容,不用担心

注意basic版本和sdk都需要下载下来,一共是两个文件

5lxht5gb01e.jpg

下载之后先解压basic压缩包,然后将sdk解压到basic目录下:

5xdivmwbsdn.jpg

添加如下环境变量到系统PATH变量:(按自己的情况添加)

hjy5giv4t0r.jpg

二、下载安装MINGW64

主要是解决WIN中没有GCC的问题

如果不安装后期会出现问题:(exec: "gcc":executable file not foundin %PATH%)

因为之前下载的ORACLEINSTANCCLIENT是64位的所以我们也需要下载MINGW64才能编译

下载地址:https://sourceforge.net/projects/mingw-w64/files/

注意,第一个是在线安装程序,较慢,建议直接下载7z压缩包。解压即可

k2gbgqujkz5.jpg

解压之后,添加如下环境变量到PATH:(按自己的情况添加)

mvcs1lk5qx4.jpg

三、获取GO-OCI8驱动

执行命令:go get github.com/wendal/go-oci8

会报一个错误:pkg-config: exec: "pkg-config": executable file not found in %PATH%

先忽略,后面会解决

四、修改OCI8.PC

进入GOPATH目录,找到OCI8.PC文件,打开,修改 红色框的部分(按你自己的情况)

%GoPath%\src\github.com\wendal\go-oci8\windows

prx515xlxe1.jpg

然后:

1.复制此目录下pkg-config.exe到mingw64下的bin目录

alqysrezjuf.jpg

2.复制此目录下oci8.pc到mingw64下的lib/pkg-config目录(pkg-config目录需要自己建)

ihhuzoxj1hq.jpg

添加如下(PKG_CONFIG_PATH)环境变量:(按自己情况)

cev45ui5vhw.jpg

五、最后一步

执行命令:go get github.com/wendal/go-oci8

此时执行这个操作

应该已经没有(pkg-config: exec: "pkg-config": executable file not found in %PATH%)这个错误了,如果还有,就是上一步你做的不太对。

但是,还会有新的错误出现,如下:

mitrul155hn.jpg

不要慌

打开GOPATH目录下,oci8.go文件

路径:%GoPath%\src\github.com\wendal\go-oci8

此文件中四处OCIServer为OCISvcCtx

ctuenl1lcuq.jpg

再次!!!!

执行命令:go get github.com/wendal/go-oci8

可以了,完事儿。

让我们上一段代码,测试一下:

package main

import (

"database/sql"

"fmt"

"log"

"os"

_ "github.com/wendal/go-oci8"

)

func query() {

os.Setenv("NLS_LANG", "AMERICAN_AMERICA.AL32UTF8")

log.SetFlags(log.Lshortfile | log.LstdFlags)

db, err := sql.Open("oci8", "j1_bibox/oracle123@10.1.196.200:1521/zjdevdb")

if err != nil {

log.Fatal(err)

}

defer db.Close()

rows, err := db.Query("select * from v$version")

if err != nil {

log.Fatal(err)

}

cols, _ := rows.Columns()

rawResult := make([][]byte, len(cols))

result := make([]string, len(cols))

dest := make([]interface{}, len(cols))

for i := range rawResult {

dest[i] = &rawResult[i]

}

for rows.Next() {

err = rows.Scan(dest...)

for i, raw := range rawResult {

if raw == nil {

result[i] = ""

} else {

result[i] = string(raw)

}

}

fmt.Printf("%s\n", result[0])

}

rows.Close()

}

func main() {

query()

}

走你

就是这么刺激,还是错!!!!?????

现在不要慌,冷静一点,分析情况

首先,如果你的代码在IDE中运行,会报错如下:

k51r210fttw.jpg

ojzcz2utrtj.jpg

如果你不信这个邪,在cmd中运行,会报错如下:

b05msjld14p.jpg

以管理员模式运行

ofgoig40bgp.jpg

IDE中也可以这样解决问题:

tz02hljxnfh.jpg

转载:https://www.cnblogs.com/jiangyuqin/p/10135963.html

到此这篇关于Go语言连接Oracle数据库的方法的文章就介绍到这了,更多相关Go语言连接Oracle内容请搜索聚米学院以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚米学院!

转载地址:https://blog.csdn.net/weixin_33595317/article/details/116363568 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:rapid php 中文乱码,Rapid PHP 2018免费版
下一篇:core java,Core Java

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月21日 07时47分28秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

开启web_2021秋招四大网申时间、网申地址汇总(持续更新),德勤、安永、普华永道已开启!... 2019-04-21
从右边开始放_停路边,被人恶意放钉子,爆胎,报警无果,要我找监控 2019-04-21
读写测试_UFS 3.0读写测试数据曝光:秒杀UFS 2.1和eMMC 2019-04-21
注册小程序要多少钱_开发一个微信小程序商城要多少钱? 2019-04-21
mysql 实现id自增序列_MySQL分表自增ID解决方案 2019-04-21
catti二级笔译综合能力真题_CATTI韩语二级口译真题及考场回忆版 2019-04-21
攻防世界 适合做桌面_世界杯大冷门,双方实力悬殊,德国队为何输给了韩国队... 2019-04-21
可涂抹什么让指纹加深_手机镀膜是什么?液体玻璃手机镀膜和膜结手机纳米防护的区别... 2019-04-21
node静态服务器优缺点_Node —— BFF 2019-04-21
新风系统风速推荐表_PE管还是PVC管?现场评测新风系统两种管道对比 2019-04-21
华为社招嵌入式软件面试_嵌入式软件面试那点事 2019-04-21
心电图多少为正常范围_一个人的正常尿酸是多少,不管体重多少,不超过这个范围都算正常... 2019-04-21
两个集合相等的例题_人教A版高中数学必修一1.1.集合间的基本关系优质课公开课课件、教案... 2019-04-21
文件 写回硬盘_小猿圈python学习-用Python操作文件 2019-04-21
转图片_PDF转图片怎么转?这个PDF转换器很不错! 2019-04-21
杭州电子科技大学历年真题_2021年杭州电子科技大学851数据结构考研复习资料... 2019-04-21
使用sklearn预测走势_使用python+sklearn实现高斯过程分类(GPC)的概率预测 2019-04-21
impdp 不兼容_oracle expdp exp高低版本间导入导出 2019-04-21
楞严咒全文翻译_楞严咒解释 2019-04-21
分层结构的生活例子_分层作业设计案例 2019-04-21