スクリプトを作成し、Oracle db (10g) とデスクトップ 'B' のアプリケーション サーバーを対象とするデスクトップ 'A' で実行しました。何の問題もなく走りました。
次に、スクリプトをデスクトップ「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 )
両方のマシンは次のように構成されました。
- Windows 7 (64 ビット)
- 32 ビット バージョンの Python (ActiveState)
- pypm install cx-oracle (バージョン cx_Oracle.clientversion() = (11, 2, 0, 3, 0) になりました - はい、これは v11 を示していますが、デスクトップ 'A' の 10g バージョンに対して機能しました)
デスクトップ「B」には Oracle 10g と WebSphere 7 がインストールされていましたが、デスクトップ「A」にはインストールされていませんでした。
私が検索したところ、多くの人がこの問題または同様の問題に遭遇しましたが、一般的に提案された唯一の解決策は次のとおりです。
- パスが Python ライブラリの前に Oracle ライブラリを参照していないことを確認してください。ここでの提案は、デスクトップ B にインストールされた Oracle が干渉していることだと思います。そのため、Pythonのみを参照するようにパスを構成しました(Oracleなどについては言及していません)-それは役に立ちませんでした
- すべての 32 ビット バージョンまたはすべての 64 ビット バージョンを使用していることを確認してください。Python に関する限り、全面的に 32 ビットを使用しました。
- cx-Oracle がターゲットとするデータベースと一致することを確認してください...問題があるように見えますが...奇妙なことに、スクリプトはデスクトップ 'A' で動作するので、環境上の何かに違いないと思いますデスクトップ「B」。そこで、専用の 10g バージョンの cx_Oracle をインストールします。どちらも成功しません。(このクエリhttps://stackoverflow.com/questions/10456598/cx-oracle-multiple-instances-of-oracle-10-and-11-plus-oracle-homeは回答されませんでしたが、本質的に似ています)
だから私は立ち往生しています - 何か提案はありますか?