如何使用golang连接到oracle数据库?

时间:2016-11-07 12:13:59

标签: oracle go

我使用Fedora 23。 在它上面我安装了oracle 12.1和golang 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:错误:使用返回码1

完成ld的执行

我尝试了很多不同的选择,但无法解决问题。

2 个答案:

答案 0 :(得分:0)

你在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

答案 1 :(得分: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 blog