mysql2.so:libmysqlclient_r.so.15:无法打开共享对象文件:找不到该文件或目录。

30

我试图在Ubuntu 10.04服务器上运行一个Rails 2应用,使用sphinx、mysql2版本0.2.7和percona server 5.5 (MySql 5.5)。在irb中,mysql2可以正常工作,我也能连接到数据库。这个Rails 2应用在另一个Centos服务器上与Mysql 5.1一起工作。当我运行:

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

我该如何修复它?


1
你能找到libmysqlclient_r.so吗?如果找到了,就将其符号链接到这里。 - ajreal
对于CentOS,请参见:http://stackoverflow.com/questions/10529401/libmysqlclient-so-15-cannot-open-shared-object-file-no-such-file-or-directory - kenorb
7个回答

102

如果你在升级到12.04后再次遇到这个错误(或者是通过谷歌搜索该页面标题而来到这里的人),以下方法对我有用:

gem uninstall mysql2
gem install mysql2

这将使用libmysqlclient18重新编译gem,在我这里起作用。


重新安装最新的库比尝试重新安装旧版本的库更好的主意。 - Simmo
1
gem uninstall do_mysql && gem install do_mysql 可以执行。 - fetsh
11
我执行了 'bundle exec gem uninstall mysql2' 命令,然后在 Rails 应用程序目录下执行了 'bundle' 命令。 - giorgio
2
我最近将我的Ubuntu升级到16.04,为了让我的应用程序正常工作,我必须做以下操作。+1 - aelor
在Ubuntu 20.04上,在运行gem命令之前,我必须先运行apt install libmysqlclient21 libmysqlclient-dev - Fernando Kosh
@giorgio 你的评论起了作用,让我摆脱了几个小时的沮丧时光。谢谢你。 - Abhi

9

您需要安装开发库。尝试执行以下操作:


sudo apt-get install libmysqlclient20-dev

或者

sudo apt-get install libmysqlclient19-dev

2
另一个选项在这里没有被提到,但已经在这个问题中回答过了。那就是你必须使用--no-binary选项安装MySQL-python。这个问题很容易找到,所以我在这里添加答案供参考:
首先卸载您当前版本的MySQL-python
pip uninstall MySQL-python

然后使用--no-binary参数安装MySQL-python

pip install --no-binary MySQL-python MySQL-python

2
安装 MySQL 客户端库:apt-get install libmysqlclient16

完成了,我收到了以下消息:libmysqlclient16 已经是最新版本。 - rtacconi

2

我在使用mysql-python时遇到了错误,通过pip解决了问题:

pip uninstall mysql-python
pip install mysql-python

1

更新至Ubuntu 19.10后,出现以下错误:

django.core.exceptions.ImproperlyConfigured: 加载MySQLdb模块时出错: libmysqlclient.so.20: 打不开共享对象文件: 没有那个文件或目录

解决方案:

1)激活您的虚拟环境

2)(yourvirtualenv)pip uninstall mysqlclient

3)(yourvirtualenv)pip install mysqlclient


0
如果你正在运行Ubuntu/Debian,正确的解决方案是安装libmariadb-dev-compat并重新构建(使用MariaDB 10.3+)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接