python导入mysqldb_Python导入MySQLdb报错

摘要

> 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` 发现如下:

```bash

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`:

```bash

[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方式安装

```bash

## 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](http://www.jianshu.com/p/2ff15676f902)

---

----------------------------------------------***更多精彩请关注***-------------------------------------

![公众号: DailyJobOps](http://upload-images.jianshu.io/upload_images/1394001-cb23ed39087edab0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/200)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宽字符编码和解码通用类[CodeWidthChartUtility]

在做jsonp传递的时候遇到一个问题,当有特殊字符或中文的时候就会导致数据错误或者是乱码,刚开始有js的编码和解码和正则,都比较麻烦,现在找到了一种合适的解决方案,宽字符编码,js端会自动解析,能…

Ubuntu16.04下安装cuda和cudnn的三种方法(亲测全部有效)

目录 1.cuda的安装 1.1 最简单的方法——分开安装驱动和cuda 1.2 更万能的方法——同时安装驱动和cuda 1.3 终极杀手锏 2.cudnn的安装 安装之前首先要确认你需要安装的cuda和cudnn的版本,假如你后续还需要安装tensorflow的话,请看我的另外一篇博客&am…

python做ui自动化_python+selenium做ui自动化测试用法必会

一、前言大家都知道,基于Web端的测试的基础框架是需要Selenium做主要支撑的,这里边给大家介绍下Web测试核心之基于 Python 的 SeleniumSelenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用…

c# 操作IIS应用程序池

直接代码: 代码 usingSystem.DirectoryServices; //添加引用 System.DirectoryServicestry{ DirectoryEntry appPool newDirectoryEntry("IIS://localhost/W3SVC/AppPools"); DirectoryEntry findPool appPool.Children.Find("DefaultAppPool&…

Android获取手机和系统版本等信息的代码

2019独角兽企业重金招聘Python工程师标准>>> String phoneInfo "Product: " android.os.Build.PRODUCT; phoneInfo ", CPU_ABI: " android.os.Build.CPU_ABI; phoneInfo ", TAGS: " android.os.Build.TAGS; phoneInfo &…

用hyperledger cello H3C分支创建单机模式区块链系统

本文介绍用hyperledger cello的0.9.0-h3c分支创建一套区块链系统的完整流程,希望对读者有所帮助。 环境准备工作:需要准备一台装有ubuntu 16.04的主机,内存需要大一些,建议8G以上。安装docker-ce和docker-compose。 接下来&…

mysql 导入导出脚本_MySQL导入和导出sql脚本

MySQL导入和导出sql脚本首先,使用mysqldump命令的前提是,在Cmd中进入mysql安装目录下的bin目录下,才可以使用该命令。我的mysql安装在E:盘,所以,首先进入bin目录下:E:\Program Files\MySQL\MySQ…

Visual Studio 2010快捷键大全

为什么80%的码农都做不了架构师?>>> 【窗口快捷键】 CtrlW,W: 浏览器窗口 CtrlW,S: 解决方案管理器 CtrlW,C: 类视图 CtrlW,E: 错误列表 CtrlW,O: 输出视图 trlW,P: 属性窗口 CtrlW,T: 任务列表 CtrlW,X: 工具箱 CtrlW,B: 书签窗口 CtrlW,U: 文档大纲 C…

c# 查询本机日志

代码 StringBuilder sb newStringBuilder();EventLog mylog newEventLog();mylog.Log "Application"; //System[系统日志] | Application[应用日志] | Security[安全日志]EventLogEntryCollection myCollection mylog.Entries;for(inti 0; i <myCollection.Count…

Python安装FrankMocap实现3D人体姿态估计

FrankMocap 是港中文联合 Facebook AI 研究院提出的3D 人体姿态和形状估计算法。 不仅仅是估计人体的运动姿态&#xff0c;甚至连身体的形状&#xff0c;手部的动作都可以一起计算出来。 算法很强大&#xff0c;能够从单目视频同时估计出 3D 人体和手部运动&#xff0c;在一块 …

079冒险岛mysql解封账号_冒险岛079MAX稀有整合2020年度版,亲测一键端10人限制端...

该版本为整合版&#xff0c;附带相关工具&#xff0c;可自行使用。以下为启动游戏的步骤。1、打开mysql文件夹里的"启动数据库"&#xff0c;启动后如果弹出提示请点确定&#xff0c;按启动按钮&#xff0c;等待mysql亮绿灯即可。2、打开079MAX服务端文件夹中的“启动…

Windows任务管理 连接用户登录信息 通用类[C#版]

通用类名[ComputerLoginUserInfo.cs] 代码如下&#xff1a; 代码 usingSystem;//---引用usingSystem.Runtime.InteropServices;usingSystem.Text;///<summary>///Windows 任务管理器登录用户信息///author:Stone_W///date:2011.1.14///</summary>publicclassComput…

Hanoi(汉诺)塔问题

问题描述&#xff1a; Hanoi(汉诺)塔问题。古代有一个梵塔&#xff0c;塔内有3个座A,B,C&#xff0c;开始时A座有n个盘子&#xff0c;盘子大小不等&#xff0c;大的在下&#xff0c;小的在上。有一个老和尚想把这n个盘子&#xff0c;从A座移动到C座&#xff0c;但是每次只允许移…

实现Windows直接远程访问Ubuntu桌面和解决VNC连接Ubuntu桌面灰色的问题解决

Accept clipboard from viewersSend clipboard to viewersSend primary selection to viewers 本文主要是讲解如果理由VNC实现Windows远程访问Ubuntu 16.04(因为本文已经有点年头了&#xff0c;之前以16.04版本为例讲解&#xff0c;最新版18.04笔主也测试过是没有问题的)&#…

python自己做个定时器_python 创建一个自己的类计时器

前言&#xff1a;学习了python的类之后收获颇多&#xff0c;于是想利用类创建一个简单的计时器第一代版本首先要明确自己的timer想要实现的功能…先列一些简单的吧比如&#xff1a;开始计时的功能&#xff0c;停止计时的功能&#xff0c;有一些简单的提示语…还有一个问题&…

javascript 懒加载技术(lazyload)简单实现

1.前言   懒加载技术(简称lazyload)并不是新技术, 它是js程序员对网页性能优化的一种方案.lazyload的核心是按需加载.在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页&#xff0c;淘宝网,QQ空间等.因此掌握lazyload技术是个不错的选择,可惜jquery插件lazy loa…

ORACLE 全文搜索(精度高排前)

select * from tab_name order by decode(instr(id, ab), 0, 9999, instr(id, ab)), decode(instr(id, ab, 2), 0, 9999, instr(id, ab, 2)), id

HttpWebRequest模拟POST提交防止中文乱码

测试通过&#xff0c;请求的为自己写的一般处理程序&#xff0c;代码如下&#xff1a; 代码 Encoding myEncoding Encoding.GetEncoding("gb2312");stringparam HttpUtility.UrlEncode("aa", myEncoding) ""HttpUtility.UrlEncode("值A&quo…

笔试题--Multicore简答题(下)

1.面向对象的特征 封装封装&#xff0c;也就是把客观事物封装成抽象的类&#xff0c;并且类可以把自己的数据和方法只让可信的类或者对象操作&#xff0c;对不可信的进行信息隐藏。继承继承是指这样一种能力&#xff1a;它可以使用现有类的所有功能&#xff0c;并在无需重新编写…

手把手带你玩转Tensorflow 物体检测 API (1)——运行实例

本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型&#xff08;1&#xff09;——环境搭建与测试》的基础上优化并总结&#xff0c;此博客链接&#xff1a;https://blog.csdn.net/dy_guox/article/details/79081499&#xff0c;感谢此博客作者。 0.前言…