zoukankan      html  css  js  c++  java
  • 关于报错:import _mysql ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

      昨天部署在CentOS Linux release 7.2.1511 (Core)上的自动化测试脚本,突然报错了“import _mysql ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory”。

      百度了下,说是MySQLdb是需要调用MySQL的c动态链接库。想了下,可能是最近刚好把自动化测试的数据库被迁到另外一个服务器,脚本所在服务器的MySQL也被卸载了,然后找不到那个库。

      解决方法:1. 先找找系统中有没有这个库:find -name  libmysqlclient.so.18 

           2.将libmysqlclient.so.18 链接到/usr/lib64中:ln -s /usr/java/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

      为什么是链接到/usr/lib64?

    Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。
    
    但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢?
    
    目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从 ld.so.cache 查找。
    
    传统上,Linux 的先辈 Unix 还有一个环境变量:LD_LIBRARY_PATH 来处理非标准路经的共享库。ld.so 加载共享库的时候,也会查找这个变量所设置的路经。

    参考:http://james23dier.iteye.com/blog/763274

       http://xummer26.com/blog/setup-mysqldb.html

      

  • 相关阅读:
    Shell使用
    从一道面试题谈linux下fork的运行机制
    老了,问题定位难了,xml编码解析
    javacc
    C++概述
    Notepad++中设置Windows、Unix、Mac三种行尾换行符格式间的转换
    玩转html5(一)-----盘点html5新增的那些酷酷的input类型和属性
    Java Drp项目实战—— 环境搭建
    cocos2d-x游戏开发 跑酷(八) 对象管理 碰撞检測
    电话拨号盘(带触摸振动反馈)
  • 原文地址:https://www.cnblogs.com/minerrr/p/9722148.html
Copyright © 2011-2022 走看看