ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Ошибка: Error SQLConnect=-1 errno=101 [unixODBC]

Проблемы и их решения Asterisk как такового

Модераторы: april22, Zavr2008

Ошибка: Error SQLConnect=-1 errno=101 [unixODBC]

Сообщение Astuser » 07 июл 2023, 19:51

Приветствую вас, коллеги. Пытаюсь сделать тестовое подключение PostgreSQL для того что бы дублировать cdr записи во вторую базу, т.к. установлен дистрибутив FreeBPX c MySQL по умолчанию. После установки PostgreSQL и драйвера ODBC для него, а так же и настройки всех необходимых конфигов не удается подключить asterisk к базе PostgreSQL при этом само подключение к базе из консоли линукс работает нормально. Обе базы установлены на одном сервере с FreeBPX.
Код ошибки:
Код: выделить все
localhost*CLI> module reload res_odbc.so
Module 'res_odbc.so' reloaded successfully.
    -- Reloading module 'res_odbc.so' (ODBC resource)
[2023-07-07 18:19:46] WARNING[11772]: res_odbc.c:1067 odbc_obj_connect: res_odbc: Error SQLConnect=-1 errno=101 [unixODBC]Could not connect to the server;
Could not connect to remote socket immedaitely
[2023-07-07 18:19:46] NOTICE[11772]: res_odbc.c:706 load_odbc_config: Registered ODBC class 'asteriskpsql' dsn->[PostgreSQL-asterisk]
[2023-07-07 18:19:46] NOTICE[11772]: res_odbc.c:706 load_odbc_config: Registered ODBC class 'asteriskcdrdb' dsn->[MySQL-asteriskcdrdb]
localhost*CLI> odbc show

ODBC DSN Settings
-----------------

  Name:   asteriskpsql
  DSN:    PostgreSQL-asterisk
    Last fail connection attempt: 2023-07-07 18:19:46
    Number of active connections: 0 (out of 1)
    Logging: Disabled

  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Number of active connections: 1 (out of 5)
    Logging: Disabled


Что пробовал: менять различные методы аутентификации в ph_hba.conf; менять server на servername и hostname в odnc.ini; в res_odbc_custom.conf добавлять time_connect=0, устанавливать более старую версию odbc для PostgreSQL. Отключил фаервол.

В PostgreSQL добавлена база asteriskcdrdb с таблицами и индексами cdr. Создана роль asterisk с паролем 777 и добавлены права:
Код: выделить все
CREATE USER asterisk WITH PASSWORD '777';
GRANT ALL ON DATABASE asteriskcdrdb TO asterisk;


Настройки конфигов следующие:

odbc.ini
Код: выделить все
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL ODBC 8.0 ANSI Driver
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3
Charset=utf8

[PostgreSQL-asterisk]
Description=PostgreSQL connection to 'asteriskcdrdb' database
Driver=PostgreSQL
Database=asteriskcdrdb
Server=localhost
UserName=asterisk
Password=777
Port=5432
ReadOnly=No
RowVersioning=No
ShowSystemTables=No
ShowOidColumn=No
FakeOidIndex=No


odbcinst.ini
Код: выделить все
[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
Trace=Yes
TraceFile=/home/odbctrace.log

[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

[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


res_odbc_custom.conf
Код: выделить все
[asteriskpsql]
enabled=>yes
dsn=>PostgreSQL-asterisk
max_connections=1
pre-connect=>yes
username=>asterisk
password=>777


pg_hba.conf
Код: выделить все
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local    asteriskcdrdb   asterisk                              md5
local    all                    all                                      trust       
#local    all                  postgres                              trust
# IPv4 local connections:
#host    all                    all            127.0.0.1/32        trust
host     asteriskcdrdb     asterisk       localhost              trust
# IPv6 local connections:
#host    all               all               ::1/128            trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            password
#host    replication     postgres        ::1/128                 password


Вывод команды odbcinst -q -d
Код: выделить все
[PostgreSQL]
[MySQL]
[MySQL ODBC 8.0 Unicode Driver]
[MySQL ODBC 8.0 ANSI Driver]


Вывод команды echo "select 1" | isql -v PostgreSQL-asterisk asterisk
Код: выделить все
+---------------------------------------+
| Connected!                            |
|                                              |
| sql-statement                        |
| help [tablename]                   |
| quit                                       |
|                                              |
+---------------------------------------+
SQL> select 1
+------------+
| ?column?   |
+------------+
| 1          |
+------------+
SQLRowCount returns 1
1 rows fetched


По команде
Код: выделить все
psql --host=localhost --port=5432 --username=asterisk --password --dbname=asteriskcdrdb

просит пароль и заходит нормально.
Astuser
 
Сообщений: 3
Зарегистрирован: 07 июл 2023, 19:04

Re: Ошибка: Error SQLConnect=-1 errno=101 [unixODBC]

Сообщение Zavr2008 » 11 июл 2023, 02:26

https://voxlink.ru/kb/asterisk-configuration/configuring-asterisk-17-with-postgresql/
Правда для ванильного 17, но не критично.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Аватар пользователя
Zavr2008
 
Сообщений: 2215
Зарегистрирован: 27 янв 2011, 01:35


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH