> 数据库 > MySQL >

mysql-mxj/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 错误的解决办法

环境:Ubuntu 12.10 64位
这个错误是我在一个Java的单元测试中遇到的,因为该unit test使用了Embedded MySQL。


『1』确定问题
它既然提示找不到 libaio.so.1,那我就看一下我是否真的没安装:

 

1
2
3
[codelast@ lib]$ dpkg -l | grep libaio
ii  libaio-dev                                0.3.109-2ubuntu1                           amd64        Linux kernel AIO access library - development files
ii  libaio1:amd64                             0.3.109-2ubuntu1                           amd64        Linux kernel AIO access library - shared library

所以,我是已经安装了的。
PS:如果你没安装,可以先查询一下软件包名:

1
2
3
4
[codelast@ lib]$ apt-cache search libaio
libaio-dev - Linux kernel AIO access library - development files
libaio1 - Linux kernel AIO access library - shared library
libaio1-dbg - Linux kernel AIO access library - debugging symbols

然后安装:

1
sudo apt-get install libaio-dev libaio1

『2』解决问题
这篇文章里提到了这个错误,大家可以看看。里面说到了,Embedded MySQL需要使用32位的libaio,因此,我已经安装上的64位的libaio是没用的。于是我“投机取巧”地到另一台服务器上找到了一个32位的 libaio.so.1.0.1,然后把它运行unit test的机器上的 /usr/lib/ 目录下,然后做一个软链接:

1
sudo ln -s libaio.so.1.0.1 libaio.so.1

然后再运行unit test,问题解决了。

(责任编辑:IT)