วันจันทร์ที่ 17 กุมภาพันธ์ พ.ศ. 2557

Build : Oracle Call Interface สำหรับ Golang

คืออยากใช้นะครับ แต่แหม่... มีแค่ https://github.com/mattn/go-oci8 ที่ดูดีสุด แต่คนเขียนเหมือนจะเขียนแล้วหนีไปแอบที่ไหนไม่รู้ ไม่บอกอะไรเลย

อยากใช้ก็ต้อง งม.. สิครับ

OCI ก็ต้องใช้ downlaod instance client มาก่อน (ตามสูตร) ลงทะเบียนแล้ว download จาก http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html ผมใช้ OSX (Maverick)

Download

  • instantclient-basic-macos_x64-11.2.0.3.0.zip
  • instantclient-sdk-macos_x64-11.2.0.3.0.zip
แล้วผมทำแบบนี้ครับ
  • unzip basic แล้ว move ไปไว้ที่ /usr/lib/instantclient_11_2
  • sym link 
    • ln /usr/lib/instantclient_11_2/libclntsh.dylib.11.1 /usr/lib/libclntsh.dylib.11.1
    • ln /usr/lib/instantclient_11_2/libocci.dylib.* /usr/lib/libocci.dylib.*
    • ln /usr/lib/instantclient_11_2/libociei.dylib /usr/lib/libociei.dylib
    • ln /usr/lib/instantclient_11_2/libnnz11.dylib /usr/lib/libnnz11.dylib
  • ดูว่าเครื่องติดตั้ง pkg-config รึยัง ถ้ายังติดตั้ง ถ้ายังใช้ MacPort ก็ได้ครับ
    • sudo port install pkgconfig
  • แล้วสร้าง oci8.pc ไว้ที่ /usr/lib/pkconfig ตามนี้ครับ (ไฟล์จากเครื่องผม)
    • prefix=/usr/lib/instantclient_11_2
      libdir=${prefix}
      includedir=${prefix}/sdk/include/

      Name: OCI
      Description: Oracle database engine
      Version: 11.2
      Libs: -L${libdir} -lclntsh
      Libs.private: 
      Cflags: -I${includedir}
  • เริ่ม  Build 
    • ไปที่ project workspace path 
    • $ export GOPATH=`pwd`
    • $ go get github.com/mattn/go-oci8
    • Go จะ Build และ link OCI ให้อัตโนมัติ โดยใช้ oci8.pc ที่เราสร้างไว้
  • ถ้าไม่มีอะไรผิดพลาด (error report) ถือว่าเสร็จเรียบร้อย
  • ทดสอบ
    • เข้าไปที่ $GOPATH/src/src/github.com/mattn/go-oci8/example
    • แก้ไฟล์ oracle.go บรรทัด 
      • db, err := sql.Open("oci8", "scott/tiger")
      • เป็น config ของ ORA ของเรา
      • ของผมเป็นแบบนี้ครับ
      • db, err := sql.Open(
        "oci8", "system/manager@192.168.1.40:1521/hello")
    • เรียก $go run oracle.go

ไม่พบ Error เสร็จ เรียบร้อย...
Modified และ Fix error จาก : https://github.com/Centny/Centny/blob/master/Articles/How%20build%20github.com:mattn:go-oci8.md 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น