从Linux环境连接到MariaDB时出错:导入错误:3号文件:无法打开共享目标文件:无此文件或目录

xriantvc  于 2023-02-12  发布在  Linux
关注(0)|答案(3)|浏览(184)

我尝试使用python连接器从Linux机器连接到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所采取的步骤:一个月一个月一个月一个月一个月

    • 注:**除了来自PYPI的pip install mariadb之外,在Linux系统中,pip脚本还搜索了mariadb_config,该配置必须从MariaDB网站下载并安装--[Connector/C]。我已经安装了Connector/C,并且能够在python环境中成功地从PYPI安装mariadb库。

此外,当我安装MariaDB连接器-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连接器,你能请指出我在解决错误。
先谢谢你,尼基尔

vd2z7a6w

vd2z7a6w1#

如错误消息所示,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(作为根用户)

fxnxkyjh

fxnxkyjh2#

只要安装百胜安装MariaDB共享。

92vpleto

92vpleto3#

我设法 * 解决了这个问题,只是使用另一个SQL驱动程序***(pymysql)**连接到玛丽亚数据库。
旧版本:

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)

谢谢

相关问题