CentOS 7 上 ODBC 出现‘无效指针’

CentOS 7 上 ODBC 出现‘无效指针’

我遇到了一个‘无效指针’在开发新的 Asterisk(PBX)配置时,在 CentOS 7 机器上使用 ODBC。

之前使用相同设置的服务器(unixODBC 版本 2.3.1)运行良好。但是当我在新服务器上重新安装所有内容时,测试 ODBC 连接时出现以下错误。

# isql -v asterisk-connector
*** Error in `isql': munmap_chunk(): invalid pointer: 0x0000000001cb2728 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f5d4)[0x7f476735d5d4]
/usr/lib64/libmyodbc5.so(MySQLGetPrivateProfileStringW+0x104)[0x7f47605563c4]
/usr/lib64/libmyodbc5.so(ds_lookup+0x5d)[0x7f4760555ced]
/usr/lib64/libmyodbc5.so(MySQLConnect+0xc6)[0x7f47605394c6]
/lib64/libodbc.so.2(SQLConnect+0xa63)[0x7f4767f2b3b3]
isql[0x4028a9]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f47673003d5]
isql[0x402c39]
======= Memory map: ========

ODBC配置如下:

==> /etc/odbc.ini <==
[asterisk-connector]
Description= MySQL connection to 'asterisk' database
Driver= MySQL
Database= asterisk
Server= localhost
User= asterisk
Password= secretpasswd
Port= 3306
Socket= /var/lib/mysql/mysql.sock

==> /etc/odbcinst.ini <==
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description     = ODBC for MySQL
Driver64        = /usr/lib64/libmyodbc5w.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1

# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

此时,我觉得我已经将两台服务器与其驱动器上的最后一位进行了比较,并在互联网上扫描了类似的问题,我不知道该做什么了。

解决了:
出现此问题的原因是 MySQL ODBC 连接器被用于不兼容的 MariaDB 数据库。

通过下载正确的驱动程序解决了(就我而言http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64//mysql-connector-odbc-8.0.15-1.el7.x86_64.rpm) 并编辑 odbcinst.ini 文件如下:

[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/lib64/libmyodbc8w.so
UsageCount=1

[MySQL ODBC 8.0 ANSI Driver]
Driver=/usr/lib64/libmyodbc8a.so
UsageCount=1

非常感谢@Pimp Juice IT 和我的同事!
我希望这能帮助其他遇到此问题的人。

答案1

解决了:
出现此问题的原因是 MySQL ODBC 连接器被用于不兼容的 MariaDB 数据库。

通过下载正确的驱动程序解决了(就我而言http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64//mysql-connector-odbc-8.0.15-1.el7.x86_64.rpm)
并编辑 odbcinst.ini 文件如下:

[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/lib64/libmyodbc8w.so
UsageCount=1

[MySQL ODBC 8.0 ANSI Driver]
Driver=/usr/lib64/libmyodbc8a.so
UsageCount=1

非常感谢@Pimp Juice IT 和我的同事!
我希望这能帮助其他遇到此问题的人。

相关内容