gooracle-autonomous-db

I get an error when trying to connect to an oracle database. How to fix it?


dbInfo := DbInfo{ Username: "ADMIN", Password: "Ddbstjrld1!a", Server: "adb.ap-seoul-1.oraclecloud.com", Port: "1522", Service: "gee9edfb92f3cf6_redglqwayxqefhhf_high.adb.oraclecloud.com", WalletLocation: "/Users/temp1/Desktop/Wallet_REDGLZWEYXQEFHHF", }

dbString := fmt.Sprintf(`user="%v" password="%v" connectString="tcps://%s:%s/%s?wallet_location=%s"`, dbInfo.Username, dbInfo.Password, dbInfo.Server, dbInfo.Port, dbInfo.Service, dbInfo.WalletLocation)

db, err := sql.Open("godror", dbString)
if err != nil {
    fmt.Println(err.Error())
}
defer db.Close()

r, err := db.Exec(`CREATE TABLE member_table (
    seq        INT NOT NULL AUTO_INCREMENT,
    mb_id     VARCHAR(20),
    mb_pw    VARCHAR(100),
    address   VARCHAR(100),
    mb_tell    VARCHAR(20),  
     PRIMARY KEY(seq)
   ) ENGINE= MYISAM CHARSET=utf8;`)

if err != nil {
    fmt.Println(err.Error())
}

fmt.Println(r)

I am using oracle for the first time. I checked the manual and followed it, but I can't solve it.

Error running query
ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 0x0001): tried: 'libclntsh.dylib' (no such file), '/usr/local/lib/libclntsh.dylib' (no such file), '/usr/lib/libclntsh.dylib' (no such file), '/Users/temp1/project/oracleDatabase/libclntsh.dylib' (no such file)". See https://oracle.github.io/odpi/doc/installation.html#macos for help
temp@temp-MacBookPro oracleDatabase % 

When connecting through dbeaver, it works normally, but when connecting with the above code in golang, the following error is returned.

I've been struggling for several days, if you show me a simple example, I think I can study while analyzing it, can you help me?


Solution

  • Update: As pointed out by Christopher Jones, goracle has been deprecated because of trademark issues. The replacement is godror

    To use it, run:

    go get github.com/godror/godror@latest
    

    and then install Oracle Client libraries. Follow its documentation to make a connection.

    As per godror documentation, you must be aware of:

    godror is cgo package. If you want to build your app using godror, you need gcc (a C compiler).


    As per the mentioned error, you need to import oracle driver [`goracle`][3] for `database/sql` to work with an oracle database.
    import (
        "database/sql"
    
        // Import the Oracle driver
        _ "gopkg.in/goracle.v2"
    )
    

    P.S.: I would suggest to add line number in question statement which raised that error so that it can be debugged easily.