PythonMySQLdb匯入libmysqlclient報錯
摘要
flask開發相關功能,在本地測試沒有問題,但是放到線上環境卻報錯
ImportError: libmysqlclient.so.16: cannot open shared object file: No such file or directory
檢查了下發現在/usr/lib64/mysql
下面存在libmysqlclient.so.18
檔案(uanme -a 確認是64位系統)
解決過程
發現問題,不是自己遇到的也沒有解決辦法,那就網上查唄,發現大家的思路:
- copy
/usr/lib64/mysql/libmysqlcient.so.18
到/usr/lib64/libmysqlclient.so.16
- 在
/usr/lib64/
下面建立libmysqlclient.so.16的軟連線 - 在
/etc/ld.so.conf.d/mysql-x86_64.conf
裡面新增 /usr/lib64/mysql
等等思路都嘗試之後發現還是還是沒有解決。
繼續思考:
環境中明明有libmysqlclient.so.18
為何要去找libmysqlclient.so.16
,
那就先考慮libmysqlclient.so.18
是從和而來。 在報錯中提到了_mysql.so
, locate 找到_mysql.so
發現是在/root/.pyenv/versions/flask2/lib/python2.7/site-packages/_mysql.so
,好專案有什麼問題,找mysql.so
發現如下:
root@pts/1 # locate mysql.so
/root/.pyenv/versions/2.7.12/envs/flask2/lib/python2.7/site-packages/_mysql.so
/usr/lib64/php/modules/mysql.so
/usr/lib64/php/modules/pdo_mysql.so
/usr/lib64/php-zts/modules/mysql.so
/usr/lib64/php-zts/modules/pdo_mysql.so
/var/lib/mysql/mysql.sock
猜想應該和和PHP有關係,想起來本地環境和線上環境安裝的PHP不一致
本地的PHP是通過 webtatic
安裝的,而伺服器上面的是通過 remi
安裝的, 在本地執行yum list |grep libmysql
:
[root@i-bskmtj6q ~]# yum list |grep libmysql
libmysqlclient16.x86_64 5.1.69-1.w6 webtatic
libmysqlclient16-devel.x86_64 5.1.69-1.w6 webtatic
發現libmysqlclient16 是來自於 webstatic
, 故解除安裝之前通過remi安裝的PHP,採用webstatic方式安裝
## remove remi
yum remove php php-fpm php-mysqlnd php-common
## install from webstatic
yum install php56w php56w-mysql php56w-fpm php56w-common
最後驗證匯入 MySQLdb 沒有報錯,一切正常
附加:
上文中提到了 webtatic
和 remi
兩個不同的安裝源,具體的區別可以參考連結
Centos下YUM安裝PHP的兩種方式 http://www.jianshu.com/p/2ff15676f902
公眾號: DailyJobOps
相關文章
- mysqlimport匯入報錯的排查MySqlImport
- PHP報錯:?configure: error: Cannot find libmysqlclientPHPErrorIBMMySqlclient
- mysql匯入報錯怎麼解決?MySql
- expdp 全庫匯入報錯總結
- magento sql 4G 匯入報錯SQL
- 安裝sysbench報錯 libmysqlclient.so.18()(64bit)IBMMySqlclient
- 匯入專案@override 報錯處理IDE
- oracle 匯入報錯:field in data file exceeds maximum lengthOracle
- exp/imp匯入匯出版本問題和ORA-6550報錯
- 解決E: Package ‘libmysqlclient-dev‘ has no installation candidate報錯PackageIBMMySqlclientdev
- Python匯入包報錯(沒有這個包)Python
- 【ORACLE 匯入匯出】exp 錯誤Oracle
- oracle匯入TYPE物件報錯ORA-02304Oracle物件
- Mysql資料庫使用Navicat Mysql匯入sql檔案報錯MySql資料庫
- 資料泵匯入分割槽表統計資訊報錯(七)
- 資料泵匯入分割槽表統計資訊報錯(二)
- 資料泵匯入分割槽表統計資訊報錯(四)
- 資料泵匯入分割槽表統計資訊報錯(三)
- 資料泵匯入分割槽表統計資訊報錯(六)
- 資料泵匯入分割槽表統計資訊報錯(五)
- 若依框架匯入阿里OSS報錯問題解決方案框架阿里
- Laravel 使用 laravel-excel擴充套件包(maatwebsite/excel)匯入報錯LaravelExcel套件Web
- MySQL:客戶端匯入資料Terminal close -- query aborted報錯MySql客戶端
- cacti匯入模板報錯Error: XML:雜湊版本不存在.ErrorXML
- mysql匯入報錯Variable 'sql_notes' can't be set to the value of 'NULL'MySqlNull
- impdp匯入包含xmltype型別欄位空表報錯問題XML型別
- IMP同庫Type物件匯入報錯ORA-02304物件
- 裝MYSQL 5.1.40遇到的libmysqlclient.so.16 錯誤MySqlIBMclient
- Nagios監控mysql從庫報錯:libmysqlclient.so.18: cannot open shared object fileiOSMySqlIBMclientObject
- 【MySQL篇】Navicat匯入SQL大檔案報錯終極解決方案MySql
- percona MYSQL 5.7.13 5.7.14 MYSQLDUMP 匯入報錯delimiter (修改MYSQLDUMP程式碼)MySqlMIT
- dbms_stats.import_table_stats匯入報錯ORA-20000Import
- IMP同庫Type物件匯入報錯ORA-02304(續)物件
- vs2022匯入optional庫optional還報錯,解決
- [轉]Android Studio匯入工程報錯 Error:Cause: peer not authenticated 解決方案AndroidError
- 匯入sql時報日期型別錯誤SQL型別
- Excel匯入null錯誤解決方式ExcelNull
- 使用BCP匯入資料犯的錯