Linux 下 nodejs 使用官方oracledb庫串連資料庫 教程

來源:互聯網
上載者:User

標籤:9.4   結果   ase   下載   save   nts   串連   .json   master   

一、安裝需要GCC 4.7(或更高版本)

因為編譯node 4(或更高版本)需要C++ 11相容的編譯器。Linux 6和RHEL 6上的預設編譯器不具備所需的C++ 11支援。安裝GCC 4.7或更高版本或升級到Linux 7。(點擊查看官方安裝c++ 11教程)或者參考 CentOS yum升級GCC到4.8 教程。

註:安裝後驗證版本:

gcc --version
二、安裝nodejs

以6.9.4版本為例安裝(根據版本參考即可)

cd /opttar -Jxf node-v6.9.4-linux-x64.tar.xz

設定Node.js 環境變數:

export PATH=/opt/node-v6.9.4-linux-x64/bin:$PATH

查看node版本

node -v
三、安裝oracle用戶端 ‘Basic‘ 和 ‘SDK‘  zip包

進入 ,下載以下兩個包,並安裝在同一個目錄

 

以本機測試為例,我的安裝位置(可自訂)為 /opt/oracle  

cd /opt/oracleunzip instantclient-basic-linux.x64-12.2.0.1.0.zipunzip instantclient-sdk-linux.x64-12.2.0.1.0.zipmv instantclient_12_2 instantclientcd instantclientln -s libclntsh.so.12.1 libclntsh.so

設定環境變數

export LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATHexport OCI_LIB_DIR=/opt/oracle/instantclientexport OCI_INC_DIR=/opt/oracle/instantclient/sdk/include
四、安裝oracledb 測試

安裝oracle庫:

npm install oracledb

輸出:

> [email protected] install /opt/oracletest/node_modules/oracledb
> node-gyp rebuild

make: Entering directory `/opt/oracletest/node_modules/oracledb/build‘
CXX(target) Release/obj.target/oracledb/src/njs/src/njsOracle.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsPool.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsConnection.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsResultSet.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsMessages.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsIntLob.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiEnv.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiEnvImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiException.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiExceptionImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiConnImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiDateTimeArrayImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiPoolImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiStmtImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiUtils.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiLob.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiCommon.o
SOLINK_MODULE(target) Release/obj.target/oracledb.node
COPY Release/oracledb.node
make: Leaving directory `/opt/oracletest/node_modules/oracledb/build‘
npm WARN saveError ENOENT: no such file or directory, open ‘/opt/oracletest/package.json‘
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open ‘/opt/oracletest/package.json‘
npm WARN oracletest No description
npm WARN oracletest No repository field.
npm WARN oracletest No README data
npm WARN oracletest No license field.

+ [email protected]
added 2 packages in 42.994s

在目前的目錄建立app.js測試連接:

var oracledb = require(‘oracledb‘);var config = {  user:‘******‘,  //使用者名稱  password:‘******‘,  //密碼
//IP:資料庫IP地址,PORT:資料庫連接埠,SCHEMA:資料庫名稱 connectString : "IP:PORT/SCHEMA"};oracledb.getConnection( config, function(err, connection) { if (err) { console.error(err.message); return; }
  //查詢某表十條資料測試,注意替換你的表名 connection.execute("SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM 你的表名) A WHERE ROWNUM <= 10 ) WHERE RN >= 0", function(err, result) { if (err) { console.error(err.message); doRelease(connection); return; } //列印返回的表結構 console.log(result.metaData); //列印返回的行資料 console.log(result.rows); }); });function doRelease(connection){ connection.close( function(err) { if (err) { console.error(err.message); } });}

執行:

node app.js

執行後報錯:

ORA-24454: client host name is not set

這裡需要設定主機名稱到 /etc/hosts

$ sudo /bin/bash -c "echo ‘127.0.1.1 ${HOSTNAME}‘ >> /etc/hosts"

設定後重新執行 node app.js 返回列印結果成功。

 

參考 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instzip

 

Linux 下 nodejs 使用官方oracledb庫串連資料庫 教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.