mysql2.so:libmysqlclient_r.so.15:无法打开共享对象文件:没有这样的文件或目录
Posted
技术标签:
【中文标题】mysql2.so:libmysqlclient_r.so.15:无法打开共享对象文件:没有这样的文件或目录【英文标题】:mysql2.so: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory 【发布时间】:2012-01-17 09:12:18 【问题描述】:我正在尝试使用 Ubuntu 10.04 服务器、sphinx、myql2 版本 0.2.7 和 percona 服务器 5.5 (Myslql 5.5) 运行 Rails 两个应用程序。 irb 中的 mysql2 工作正常,我可以连接到数据库。这个 rails 2 应用程序正在另一个带有 MySql 5.1 的 Centos 服务器上工作。当我跑步时:
script/server -e production
我明白了:
mysql2.so: libmysqlclient_r.so.15: 无法打开共享对象文件:没有这样的文件或目录
这是我拥有的库:
# ls -l /usr/lib |grep sql
-rw-r--r-- 1 root root 10581008 2011-11-18 16:51 libmysqlclient.a
lrwxrwxrwx 1 root root 16 2011-12-10 05:48 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx 1 root root 20 2011-12-10 05:48 libmysqlclient.so -> libmysqlclient.so.16
lrwxrwxrwx 1 root root 29 2011-12-10 06:01 libmysqlclient.so.15 -> /usr/lib/libmysqlclient.so.16
-rw-r--r-- 1 root root 7332 2011-11-18 16:44 libmysqlservices.a
-rw-r--r-- 1 root root 562520 2010-02-08 06:59 libsqlite3.a
-rw-r--r-- 1 root root 973 2010-02-08 06:59 libsqlite3.la
lrwxrwxrwx 1 root root 19 2011-12-07 17:15 libsqlite3.so -> libsqlite3.so.0.8.6
lrwxrwxrwx 1 root root 19 2011-03-09 18:43 libsqlite3.so.0 -> libsqlite3.so.0.8.6
-rw-r--r-- 1 root root 528668 2010-02-08 06:59 libsqlite3.so.0.8.6
drwxr-xr-x 3 root root 4096 2011-12-10 05:47 mysql
我该如何解决?
【问题讨论】:
你能找到 libmysqlclient_r.so 吗?如果找到,符号链接到这个 对于 CentOS,请参阅:***.com/questions/10529401/… 【参考方案1】:如果您运行的是 Ubuntu/Debian,正确的解决方案是安装 libmariadb-dev-compat 并重新构建(使用 MariaDB 10.3+)。
【讨论】:
【参考方案2】:更新到 Ubuntu 19.10 后。我得到了错误:
django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错:libmysqlclient.so.20:无法打开共享对象文件:没有这样的文件或目录
解决方案:
1) 激活你的 virtualenv
2) (你的虚拟环境)pip uninstall mysqlclient
3) (你的虚拟环境)pip install mysqlclient
【讨论】:
【参考方案3】:如果您在升级到 12.04 后再次遇到此错误(或者对于在升级到 12.04 后谷歌搜索此页面标题后到达这里的人),以下对我有用:
gem uninstall mysql2
gem install mysql2
这将使用 libmysqlclient18 重新编译 gem,并为我工作。
希望能帮助到那里的人。
【讨论】:
使用最新的库重新安装比尝试重新安装旧库要好得多。 也可以是do_mysqlgem uninstall do_mysql && gem install do_mysql
我在 rails 应用程序目录中执行了 'bundle exec gem uninstall mysql2' 和 'bundle'。
太棒了。真希望我早一个小时找到这个。
我最近将我的 ubuntu 升级到 16.04,这是我必须做的才能让我的应用正常运行 +1【参考方案4】:
这里没有提到的另一个选项,但已在this question 中回答。是您必须使用--no-binary
选项安装MySQL-python
。这个问题比较容易找到,所以我在这里添加答案以供参考:
首先卸载你当前版本的MySQL-python
:
pip uninstall MySQL-python
然后用--no-binary
参数安装MySQL-python
:
pip install --no-binary MySQL-python MySQL-python
【讨论】:
【参考方案5】:您需要安装开发库。试试
sudo apt-get install libmysqlclient20-dev
或
sudo apt-get install libmysqlclient19-dev
【讨论】:
【参考方案6】:我在使用 mysql-python 时遇到了这个错误,并使用 pip 解决了这个问题:
pip uninstall mysql-python
pip install mysql-python
【讨论】:
【参考方案7】:安装mysql客户端库:apt-get install libmysqlclient16
【讨论】:
完成,我得到:libmysqlclient16 已经是最新版本了。以上是关于mysql2.so:libmysqlclient_r.so.15:无法打开共享对象文件:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu libmysqlclient.so文件在啥地方
Python:MySQLdb 和“未加载库:libmysqlclient.16.dylib”
Centos7安装Mysql报错:postfix-2.10.1-9.el7.x86_64需要:libmysqlclient.so.18
Centos7安装Mysql报错:postfix-2.10.1-9.el7.x86_64需要:libmysqlclient.so.18
Centos7安装Mysql报错:postfix-2.10.1-9.el7.x86_64需要:libmysqlclient.so.18