oracle - 在找不到 Oracle 数据库客户端库时避免 Go panic

标签 oracle go oracle-call-interface

我有一个用 Go 编写的服务器,可以访问 Oracle 数据库。它工作正常。但是,将有多个实例在不同的(当前为 2 个)位置运行,其中一些不需要访问数据库。 (他们从他们的对等服务器获得传递给他们的相同信息。)

我希望在所有地方都运行相同的可执行文件,但有些地方将被配置为不使用数据库,因为它们不需要它。问题是,一旦我导入 OCI 包,它的 init() 函数就会被调用,当它无法与数据库对话时会发生 panic 。

在 Windows Server 2019 上运行 GO 1.12.5。

我尝试将 OCI.DLL 添加到与 .EXE 相同的目录,但它仍然出现错误。

import _ "github.com/mattn/go-oci8"

当我在服务器上运行时(没有数据库驱动程序)我得到错误:

panic: OCIEnvCreate error

goroutine 1 [running]:
github.com/mattn/go-oci8.init.0()
        D:/Golang/src/github.com/mattn/go-oci8/globals.go:160 +0x130

当我不需要数据库访问时,我想避免这种 panic 。我更喜欢一个没有条件构建困惑的 .EXE。

最佳答案

切换到 Go goracle driver哪个delays Oracle client library initialization直到准确打开连接以处理您的情况,在这种情况下,并非所有应用程序用户都连接到 Oracle DB。

关于oracle - 在找不到 Oracle 数据库客户端库时避免 Go panic ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436128/

相关文章:

mysql - 如何合并两个sql select语句

sql - 为什么这个 DELETE 查询在 Oracle 上这么慢?

macos - 无法获取 GoLang oracle 包

具有多种类型的协程和 channel

windows - 如何使用 MinGW 在 Windows 上构建 Qt QOCI(Oracle 数据库驱动程序)?

oracle - Oracle 中的时态表

oracle - Delphi - Oracle RowID 被 dbGO/ADO 忽略

go - 将 db 变量传递给函数参数

java - 尝试使用 OCI 连接到 Oracle 时 JVM 崩溃

c++ - OCI 预取不工作