MariaDB Python操作错误:此功能未实现或已禁用

gkn4icbw  于 2023-01-05  发布在  Python
关注(0)|答案(1)|浏览(138)

我在Debian 11(bullseye)机器上编译并安装了Python 3.10.9(来自. tar)和mariadb-c-connector(来自官方Github repo)。ufw、fail2ban、mariadb服务器、mariadb客户端。
现在,如果我安装mariadb在我的Python pipenv和运行,我得到了错误:mariadb.OperationalError: This feature is not implemented or disabled.
在我的manjaro上运行良好。这是我创建到数据库的连接的方法。

def connect(self):

    if self.conn:
        return

    # Connect to MariaDB Platform
    try:
        self.conn = mariadb.connect(
            user=self.user,
            password=self.password,
            host=self.host,
            port=self.port,
            database=self.database,
            reconnect=True,
        )
    except mariadb.Error as e:
        log.exception(f"Error connecting to MariaDB Platform: {e}")
        self.conn = None
        return

我做错了什么,还是缺少了什么?
先谢谢你。
编辑:
mariadb_config --cc_version --libs的输出

3.3.4
-L/usr/lib/mariadb/ -lmariadb

ldd /home/USER/.local/share/virtualenvs/PROJEKT/lib/python3.10/site-packages/mariadb/_mariadb.cpython-310-x86_64-linux-gnu.so的输出

linux-vdso.so.1 (0x00007fffa2eec000)
libmariadb.so.3 => /lib/x86_64-linux-gnu/libmariadb.so.3 (0x00007f6911918000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6911743000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f691173d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f691171b000)
libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f6911688000)
libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f6911394000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6911375000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6911988000)
cwxwcias

cwxwcias1#

以下是检入源代码:

#if MARIADB_PACKAGE_VERSION_ID > 30301
   if (mysql_optionsv(self->mysql, MARIADB_OPT_STATUS_CALLBACK, MrdbConnection_process_status_info, self))
      goto end;
#endif

它失败了,因为mysql_optionsv不支持选项MARIADB_OPT_STATUS_CALLBACK并返回错误CR_NOT_IMPLEMENTED
所以看起来你建造了(已安装)mariadb模块,具有所需的正确连接器/C版本(〉3.3.1),但是在默认库路径中有一个旧版本的Connector/C。MariaDB Server 10.5.18也安装了太旧的MariaDB Connector/C 3.1.18。如果在MariaDB Python模块之后安装它,Connector/C3.3安装可能已被覆盖。

相关问题