数据库教程:Go语言连接Oracle数据库的方法

首先交代一下运行环境和工具版本:win10mingw64oracleinstancclient_18_3 x64jetbrins goland编译阶段:1. exec: “gcc”: executab

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

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都需要下载下来,一共是两个文件

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

二、下载安装mingw64

主要是解决win中没有gcc的问题

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

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

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

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

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

三、获取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%srcgithub.comwendalgo-oci8windows

Go语言连接Oracle数据库的方法

然后:

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

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

五、最后一步

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

此时执行这个操作

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

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

Go语言连接Oracle数据库的方法

不要慌

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

路径:%gopath%srcgithub.comwendalgo-oci8

此文件中四处ociserver为ocisvcctx

Go语言连接Oracle数据库的方法

再次!!!!

执行命令: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("%sn", result[0])    }    rows.close()  }    func main() {    query()  }

走你

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

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

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

Go语言连接Oracle数据库的方法

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

以管理员模式运行

Go语言连接Oracle数据库的方法

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

Go语言连接Oracle数据库的方法

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

到此这篇关于go语言连接oracle数据库的方法的文章就介绍到这了,更多相关go语言连接oracle内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多数据库技术:Go语言连接Oracle数据库的方法,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/795291.html

(0)
上一篇 2021年9月10日
下一篇 2021年9月10日

精彩推荐