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_mysql gem 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”

linux上卸载mysql遇到的问题

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