2014-09-05 53 views
3

我正在嘗試使用ibm_db gem與DB2數據庫和我的rails應用程序建立連接。但是,大多數可用的文檔是a)非常古老的,b)有點太技術性,我不明白。安裝好gem之後,我更新了我的開發數據庫,​​其結構爲here,但是當我嘗試啓動Rails數據庫時,收到錯誤:使用Ruby on Rails設置DB2數據庫

由於:uncaught throw:連接失敗,無法連接到[XXXXXX]失敗:[IBM] [CLI Driver] SQL1531N連接失敗,因爲無法在db2dsdriver.cfg配置文件或db2cli.ini配置文件中找到使用DSN連接字符串關鍵字指定的名稱。連接中指定的數據源名稱字符串:\「XXXXXXXX \」。SQLCODE = -1531「(RuntimeError)

我知道這意味着我需要創建一個db2dsdriver.cfg文件,但我不知道從哪裏開始如何創建它以及在哪裏保存它。這些文件說我應該在gem附帶的.sample文件之後對它進行建模,但我不確定哪些信息在哪裏。你可以看到下面的示例文件:

<configuration> 
    <dsncollection> 
     <dsn alias="alias1" name="name1" host="server1.net1.com" port="50001"/> 
     <!-- Long aliases are supported --> 
     <dsn alias="longaliasname2" name="name2" host="server2.net1.com" port="55551"> 
     <parameter name="Authentication" value="SERVER_ENCRYPT"/> 
     </dsn> 
    </dsncollection> 
    <databases> 
     <database name="name1" host="server1.net1.com" port="50001"> 
     <parameter name="CurrentSchema" value="OWNER1"/> 
     <wlb> 
      <parameter name="enableWLB" value="true"/> 
      <parameter name="maxTransports" value="50"/> 
     </wlb> 
     <acr> 
      <parameter name="enableACR" value="true"/> 
     </acr> 
     <specialregisters> 
      <parameter name="CURRENT DEGREE" value="'ANY'"/> 
     </specialregisters> 
     <sessionglobalvariables> 
      <parameter name="global_var1" value="abc"/> 
     </sessionglobalvariables> 
     </database> 
     <!-- Local IPC connection --> 
     <database name="name3" host="localhost" port="0"> 
     <parameter name="IPCInstance" value="DB2"/> 
     <parameter name="CommProtocol" value="IPC"/> 
     </database> 
    </databases> 
    <parameters> 
     <parameter name="GlobalParam" value="Value"/> 
     <!-- Client configuration for Optim Performance Manager Extended Insight (OPM EI) and Optim Configuration Manager (OCM)--> 
     <!-- <parameter name="connectionSupervisorLibrary" value="/home/pureQuery/pqcmx"/> --> 
     <!-- <parameter name="connectionSupervisorProperties" value="controllerURL=server1.net1.com:65000,httpControllerURL=http://ibmdatacmserver:12206,cmxUUID=myuuid"/> --> 
    </parameters> 
</configuration> 
+0

試試這個https://github.com/ibmdb/ruby-ibmdb – 2014-09-05 15:46:59

+0

這就是我已經使用寶石... – 2014-09-05 15:49:32

+0

在同一臺計算機上運行的Rails作爲DB2?如果不是,您安裝了哪個DB2客戶端軟件包? – 2014-09-05 18:43:09

回答

0

我知道這是一箇舊的帖子,但今天打它。

你能告訴我們你在database.yml文件中指定了什麼。

您不必擔心在dsdriver.cfg中指定了數據庫和相關信息您可以直接在database.yml中指定它,並且它會被拾取。

你的database.yml文件看起來應該如下(假設你是on Rails的4)

default: &default 
    adapter: ibm_db 
    username: praveen 
    password: ******* 
    #schema: db2inst1 
    #host: localhost 
    #port: 50000 
    #account: my_account 
    #app_user: my_app_user 
    #application: my_application 
    #workstation: my_workstation 
    #security: SSL 
    #timeout: 10 
    #authentication: SERVER 
    #parameterized: false 

development: 
    <<: *default 
    database: railsdb 

您需要對指定的各鍵的數據庫,端口,主機,用戶名和密碼信息。如果你不知道如何在database.yml中的部分實際上應該活脫脫使用以下命令創建Rails應用

軌新MYAPP -d IBM_DB

-d選項生成的database.yml骨骼特異IBM_DB

感謝

普利文