Error connecting to MariaDB from Linux Environment: ImportError: libmariadb.so.3: cannot open shared object file: No such file or directory
Error connecting to MariaDB from Linux Environment: ImportError: libmariadb.so.3: cannot open shared object file: No such file or directory
我正在尝试使用来自 linux 机器的 python 连接器连接到 MariaDB,但在这样做时出现以下错误;
(venv) [admin@server connector_testing]$ python mariadb_connector.py
Traceback (most recent call last):
File "mariadb_connector.py", line 15, in <module>
engine = create_engine(CONNECTION_STRING)
File "<string>", line 2, in create_engine
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
return fn(*args, **kwargs)
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/engine/create.py", line 560, in create_engine
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/mariadbconnector.py", line 106, in dbapi
return __import__("mariadb")
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb/__init__.py", line 10, in <module>
from ._mariadb import (
ImportError: libmariadb.so.3: cannot open shared object file: No such file or directory
从 PYPI 安装 mariadb 的步骤:
pip install sqlalchemy
pip install mariadb
注意: 除了来自 PYPI 的 pip install mariadb
,在 linux 系统中,pip 脚本还额外搜索了 mariadb_config 必须从 MariaDB 网站下载并安装 -- [Connector/C]。我已经安装了 Connector/C 并且能够在 python 环境中从 PYPI 成功安装 mariadb 库。
此外,当我安装 MariaDB Connector-C 时,我注意到在 "lib/mariadb" 目录中我们有 "libmariadb.so.3"
mariadb connector-c had these 3 directories:
(venv) [admin@server mariadb-connector-c-3.1.9-centos7-amd64]$ ls -rlt
drwx------. 4 admin admin 38 Jun 19 2020 lib
drwx------. 3 admin admin 21 Jun 19 2020 include
drwx------. 2 admin admin 28 Jun 19 2020 bin
(venv) [admin@server lib]$ ls -lrt
drwx------. 2 admin admin 27 Jun 19 2020 pkgconfig
drwx------. 3 admin admin 90 Jun 19 2020 mariadb
(venv) [admin@server mariadb]$ ls -lrt
-rwx------. 1 admin admin 1525776 Jun 19 2020 libmariadb.so.3
-rw-------. 1 admin admin 2677912 Jun 19 2020 libmariadbclient.a
drwx------. 2 admin admin 186 Jun 19 2020 plugin
lrwxrwxrwx. 1 admin admin 15 Jun 19 2020 libmariadb.so -> libmariadb.so.3
所以我已经将它复制到出现错误的位置:/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb,但我仍然得到同样的错误。
(venv) [admin@server mariadb]$ pwd
/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb
(venv) [admin@server connector_testing]$ cd /home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb
(venv) [admin@server mariadb]$ ls -lrt
-rwx--x--x. 1 admin admin 465280 Nov 30 14:46 _mariadb.cpython-37m-x86_64-linux-gnu.so
-rw-------. 1 admin admin 928 Nov 30 14:46 __init__.py
drwx------. 2 admin admin 37 Nov 30 14:46 __pycache__
drwx------. 3 admin admin 119 Nov 30 14:46 constants
-rwx------. 1 admin admin 1525776 Dec 3 10:08 libmariadb.so.3
-rw-------. 1 admin admin 2677912 Dec 3 10:08 libmariadbclient.a
lrwxrwxrwx. 1 admin admin 15 Dec 3 10:08 libmariadb.so -> libmariadb.so.3
drwx------. 2 admin admin 186 Dec 3 10:08 plugin
如果有人在使用 mariadb 连接器时遇到过类似问题,请指点我解决错误。
提前致谢,尼基尔
如错误消息所述,MariaDB Connector/Python 无法从 Connector/C 中找到共享库。
如果您没有通过包管理器安装 Connector/C(通常包管理器负责库路径),您必须指定可以找到共享对象的位置。
解决方案 1:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/pathof/libmariadbso
export LD_LIBRARY_PATH
解决方案 2(永久):
之后添加 /etc/ld.so.conf
和 运行 ldconfig
的路径(作为 root)
我设法通过使用另一个 SQL - 驱动程序 (pymysql) 连接到 Maria DB 来解决问题.
旧:
CONNECTION_STRING = 'mariadb+mariadbconnector' + '://{}:{}@{}:{}/{}'.format(USERNAME, quote(PASSWORD), HOST, str(PORT), DB_NAME)
修改为:
CONNECTION_STRING = 'mariadb+pymysql' + '://{}:{}@{}:{}/{}'.format(USERNAME, quote(PASSWORD), HOST, str(PORT), DB_NAME)
谢谢
我正在尝试使用来自 linux 机器的 python 连接器连接到 MariaDB,但在这样做时出现以下错误;
(venv) [admin@server connector_testing]$ python mariadb_connector.py
Traceback (most recent call last):
File "mariadb_connector.py", line 15, in <module>
engine = create_engine(CONNECTION_STRING)
File "<string>", line 2, in create_engine
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
return fn(*args, **kwargs)
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/engine/create.py", line 560, in create_engine
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/mariadbconnector.py", line 106, in dbapi
return __import__("mariadb")
File "/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb/__init__.py", line 10, in <module>
from ._mariadb import (
ImportError: libmariadb.so.3: cannot open shared object file: No such file or directory
从 PYPI 安装 mariadb 的步骤:
pip install sqlalchemy
pip install mariadb
注意: 除了来自 PYPI 的 pip install mariadb
,在 linux 系统中,pip 脚本还额外搜索了 mariadb_config 必须从 MariaDB 网站下载并安装 -- [Connector/C]。我已经安装了 Connector/C 并且能够在 python 环境中从 PYPI 成功安装 mariadb 库。
此外,当我安装 MariaDB Connector-C 时,我注意到在 "lib/mariadb" 目录中我们有 "libmariadb.so.3"
mariadb connector-c had these 3 directories:
(venv) [admin@server mariadb-connector-c-3.1.9-centos7-amd64]$ ls -rlt
drwx------. 4 admin admin 38 Jun 19 2020 lib
drwx------. 3 admin admin 21 Jun 19 2020 include
drwx------. 2 admin admin 28 Jun 19 2020 bin
(venv) [admin@server lib]$ ls -lrt
drwx------. 2 admin admin 27 Jun 19 2020 pkgconfig
drwx------. 3 admin admin 90 Jun 19 2020 mariadb
(venv) [admin@server mariadb]$ ls -lrt
-rwx------. 1 admin admin 1525776 Jun 19 2020 libmariadb.so.3
-rw-------. 1 admin admin 2677912 Jun 19 2020 libmariadbclient.a
drwx------. 2 admin admin 186 Jun 19 2020 plugin
lrwxrwxrwx. 1 admin admin 15 Jun 19 2020 libmariadb.so -> libmariadb.so.3
所以我已经将它复制到出现错误的位置:/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb,但我仍然得到同样的错误。
(venv) [admin@server mariadb]$ pwd
/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb
(venv) [admin@server connector_testing]$ cd /home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb
(venv) [admin@server mariadb]$ ls -lrt
-rwx--x--x. 1 admin admin 465280 Nov 30 14:46 _mariadb.cpython-37m-x86_64-linux-gnu.so
-rw-------. 1 admin admin 928 Nov 30 14:46 __init__.py
drwx------. 2 admin admin 37 Nov 30 14:46 __pycache__
drwx------. 3 admin admin 119 Nov 30 14:46 constants
-rwx------. 1 admin admin 1525776 Dec 3 10:08 libmariadb.so.3
-rw-------. 1 admin admin 2677912 Dec 3 10:08 libmariadbclient.a
lrwxrwxrwx. 1 admin admin 15 Dec 3 10:08 libmariadb.so -> libmariadb.so.3
drwx------. 2 admin admin 186 Dec 3 10:08 plugin
如果有人在使用 mariadb 连接器时遇到过类似问题,请指点我解决错误。
提前致谢,尼基尔
如错误消息所述,MariaDB Connector/Python 无法从 Connector/C 中找到共享库。
如果您没有通过包管理器安装 Connector/C(通常包管理器负责库路径),您必须指定可以找到共享对象的位置。
解决方案 1:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/pathof/libmariadbso
export LD_LIBRARY_PATH
解决方案 2(永久):
之后添加 /etc/ld.so.conf
和 运行 ldconfig
的路径(作为 root)
我设法通过使用另一个 SQL - 驱动程序 (pymysql) 连接到 Maria DB 来解决问题.
旧:
CONNECTION_STRING = 'mariadb+mariadbconnector' + '://{}:{}@{}:{}/{}'.format(USERNAME, quote(PASSWORD), HOST, str(PORT), DB_NAME)
修改为:
CONNECTION_STRING = 'mariadb+pymysql' + '://{}:{}@{}:{}/{}'.format(USERNAME, quote(PASSWORD), HOST, str(PORT), DB_NAME)
谢谢