Python連oracle遇到的坑

今天是一直報錯~解決錯誤~報錯的一天~~~~~~~~

一、報TCC協(xié)議內(nèi)部錯誤

寫的代碼根據(jù)老庫都調(diào)通了之后,部署到了生產(chǎn)線的新庫,但是報了ORA-03130:TCC協(xié)議內(nèi)部錯誤。

剛開始查到是說cx_Oracle是不通版本可能會不兼容,突然想起來原來oracle是不同版本的(我腦袋永遠(yuǎn)是不能發(fā)散思維的。。),于是查了下

老庫:

新庫:

真的是不通版本的!

為什么不同版本就會報錯呢?就要從cx_Oracle這個包的工作原理講起。

1、原因

可以把cx_Oracle這個包想象成PLSQL,如果你本地不裝oracle客戶端,只安裝了PLSQL是不能用的,所以因為我本地裝了11g的oracle客戶端,再去連新庫的時候,就會報莫名其妙的錯誤了(我?guī)煾到o我是這么解釋的)。

2、解決方法

本地裝一個12c的oracle客戶端就好啦?。。?i>如果有不同的好的解決方法,非常非常希望能共享)

二、報TNS:無法解析指定的連接標(biāo)識符的錯誤

1、原因

將代碼在本地跑通后,放到服務(wù)器上又報了這個錯誤——ORA-12154

檢查防火墻關(guān)了,ping和telnet也都是通的,TNS也配置好了(echo?$ORACLE_HOME可查)后,突然發(fā)現(xiàn),密碼里面有特殊字符!

所以會報錯,直接用

sqlplus username/password@TNS

啟用sqlplus也會報錯。

2、解決方法

在有特殊符號時

服務(wù)器啟動sqlplus用

sqlplus 'username/"password"’@TNS

cx_Oracle連接時,用

conn = cx_Oracle.connect(‘username /"password"@ TNS’)

就可以啦

三、換行符問題

這個不算python連oracle的注意點,但是也是今天遇到的一個問題,將代碼部署到服務(wù)器后一直報錯,后來找到了原因:是不同系統(tǒng)的換行符不同導(dǎo)致的。

UNIX系統(tǒng)是,OS系統(tǒng)是,win系統(tǒng)是。

所以一個文件從一種系統(tǒng)移到另一種系統(tǒng),就有換行符的麻煩。

這時候,只需要vi該文件切換到命令模式,然后

set ff=unix

就好啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容