1

Я сталкиваюсь с «недопустимым указателем» с ODBC на машине с CentOS 7 при разработке новой конфигурации Asterisk (PBX).

Предыдущий сервер с идентичной настройкой (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 ответ1

0

РЕШИТЬ:
Эта проблема была вызвана тем, что коннектор 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 об / мин)
и отредактируйте файл 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 и моему коллеге!
Я надеюсь, что это помогает другим, кто испытывает эту проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .