2012-10-08 45 views
0

我寫了一個腳本,並將其運行在桌面'A'上,其目標是桌面'B'上的Oracle數據庫(10g)和應用程序服務器。它運行沒有任何問題。cx_Oracle錯誤ORA-24315連接時...有時

我然後複製腳本到桌面「B」和它吐出以下:「ORA-24315:非法的屬性類型」在下面的代碼片斷:

cx_dsn = cx_Oracle.makedsn(cx_hostname, cx_port, cx_SID) 
cx_connection = cx_Oracle.Connection(cx_username + '/' + cx_password + '@'+ cx_dsn) 

兩臺機器被配置如下:

  • 視窗7(64位)
  • 32位版本的Python(的ActiveState)
  • pypm安裝CX-預言(其導致版本cx_Oracle.clientv ersion()=(11,2,0,3,0) - 是的,這確實表明v11,但它對桌面'A'的10g版本有效)

然而桌面'B'有Oracle 10g和WebSphere 7安裝 - 桌面「A」沒

我已經搜查,很多人都遇到過這個問題,或者類似的,但一般的時候,唯一建議的解決方案是:

  1. 確保該路徑沒有引用Python庫之前的Oracle庫 - 我猜這裏的建議是,桌面B上的Oracle安裝需要考慮。所以我配置了路徑,以便它只引用Python(沒有提及Oracle等) - 這沒有幫助
  2. 請確保您使用的是32位版本的所有內容或64位版本的所有內容 - 我都是32位版本董事會盡可能Python有關
  3. 確保cx-Oracle匹配你所針對的數據庫......好吧,它看起來像我有一個問題,但...奇怪的是,該腳本在桌面上工作' A',所以我認爲它必須是桌面環境'B'。因此,我去安裝一個專用的10g版本的cx_Oracle。沒有成功。 (這個查詢https://stackoverflow.com/questions/10456598/cx-oracle-multiple-instances-of-oracle-10-and-11-plus-oracle-home沒有回答,但性質聽起來很相似)

所以我卡住了 - 有什麼建議嗎?

+0

確保所有的變量和文字都是字節字符串而不是unicode字符串。這可能是。 –

+0

我試過並驗證過它絕對不是unicode字符串問題。我在一臺乾淨的XP機器上重複安裝,並且它沒有連接到桌面'B'的問題,所以cx_Oracle必須從桌面'B'上的本地Oracle數據庫安裝中挑選一些東西 - 當我得到解決方案時,我會發布解決方案。 – belvoir

回答

0

在安裝不同版本的第二個Oracle客戶端後,我們遇到了ORA-24315錯誤。在PATH環境變量中,我們只是改變了Oracle路徑條目的順序。可能cx_Oracle只考慮PATH變量中Oracle的第一次出現。

我們的配置: 運7,甲骨文11.2.0.3,cx_Oracle-5.1.1-11g.win32-py2.6

變化: 另外安裝了Oracle 10.2.0

產生的錯誤消息: cx_Oracle.DatabaseError:ORA-24315:非法屬性類型

我們如何得到它重新工作: 改變路徑的順序從 path_to_Oracle10; path_to_Oracle11; ... 到 path_to_Oracle11; path_to_Oracle10; ...

0

無論我如何嘗試連接,我都收到錯誤ORA-24315

解決方案:

我最初下載/安裝Ora11g版本,但數據庫爲10g。 我安裝了cg_Oracle的10g版本,並且連接第一次工作。