如何连接Oracle数据库?

3

我正在使用Fedora 23,安装了Oracle 12.1Go 1.7.1

当我运行以下命令时:

go get github.com/mattn/go-oci8

我遇到了一个错误:

/usr/bin/ld: 在搜索 -lclntsh 时跳过不兼容的 /usr/lib/oracle/12.1/client64/lib/libclntsh.so

/usr/bin/ld: 无法找到 -lclntsh

collect2: 错误:ld 的执行返回码为 1


您正在执行命令的用户是否属于ORACLE组? - Tinwor
2个回答

1
你在oci8.pc文件中放了什么内容?
我刚刚使用以下内容使其工作。请注意,我只在前缀路径下安装了oracle 11.2即时客户端。我假设您需要更改版本号以适应相应的版本。
prefix=/home/sbr/wk/apps/oracle/product/11.2.0/client_1
exec_prefix=${prefix}
libdir=${prefix}
includedir=${prefix}/sdk/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh
Cflags: -I${includedir}
Version: 11.2

0

1、安装 goracle

2、安装 TMD GCC

3、使用 sql.open 连接到 Oracle 数据库,以下是一个小例子。

package main

import (
    "fmt"
    "database/sql"
    _ "gopkg.in/goracle.v2"
)

func main(){

    db, err := sql.Open("goracle", "scott/tiger@10.0.1.127:1521/orclpdb1")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()


    rows,err := db.Query("select sysdate from dual")
    if err != nil {
        fmt.Println("Error running query")
        fmt.Println(err)
        return
    }
    defer rows.Close()

    var thedate string
    for rows.Next() {

        rows.Scan(&thedate)
    }
    fmt.Printf("The date is: %s\n", thedate)
}

来自Oracle博客


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接