Asterisk 无法使用 odbc 连接器连接到数据库
Asterisk unable to connect to database using odbc connector
我是 Asterisk 的新手,这是我第一次尝试连接到数据库 (MySQL)。但是我不断收到此错误 [unixODBC][Driver Manager] 未找到数据源名称,并且未指定默认驱动程序 。这是我的设置:
/etc/odbcinst.int
[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
;UsageCount = 2
/etc/odbc.ini
[MYSQL-DNS]
Driver =MySQL
Description = MySQL connection to ‘My Voice’ database
Trace = Yes
TraceFile = /tmp/odbc.log
Server =localhost
Port =3306
Database =my_database
UserName =myuser
Password =mypass
Option = 3
Socket =/var/run/mysqld/mysqld.sock
/var/lib/asterisk/.profile
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
我也将 odbcinst.ini 和 odbc.ini 分别复制到 ~/.odbcinst.ini 和 ~/.odbc.ini 并复制到 /var/lib/asterisk/ 只是为了打消疑虑。
res_odbc.conf
[ENV]
[my_database]
enabled => yes
dsn =>MYSQL-DNS
username => myuser
password => mypass
pre-connect => yes
sanitysql => select 1
;idlecheck => 3600
share_connections => yes
pooling => no
limit => 1
;isolation=repeatable_read
命令 odbcinst -j 输出
$ odbcinst -j
unixODBC 2.3.2
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
我想我之前做了一个象征性的 link 到 /usr/lib 从而找到 libmyodbc.so 输出
$ locate libmyodbc.so
/usr/lib/libmyodbc.so
/usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
我还添加了 x 权限即(从 644 更改为 755):
ls -alsh /usr/lib/x86_64-linux-gnu/odbc/
显示 755 *.so
日志输出
res_odbc.c: Connecting my_database
[Aug 1 09:32:40] WARNING[27846] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
[Aug 1 09:32:40] WARNING[27846] res_odbc.c: Failed to connect to my_database
[Aug 1 09:32:40] ERROR[27846] res_config_odbc.c: No database handle available with the name of 'my_database' (check res_odbc.conf)
您可以检查连接
isql -vvv MYSQL-DNS
那将清楚地告诉你哪里出了问题。
我用
解决了这个问题
Install system DSN
$ odbcinst -i -s -l -f /etc/odbc.ini
Test your DSN install by lisinting your installed data sources.
$ odbcinst -s -q
我 运行 最近遇到了同样的问题,并通过添加到我的 res_odbc.conf
:
解决了这个问题
[ENV]
ODBCSYSINI => /etc
ODBCINI => /etc/odbc.ini
看来问题是 Asterisk 没有正确加载 .profile
。
我是 Asterisk 的新手,这是我第一次尝试连接到数据库 (MySQL)。但是我不断收到此错误 [unixODBC][Driver Manager] 未找到数据源名称,并且未指定默认驱动程序 。这是我的设置:
/etc/odbcinst.int
[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
;UsageCount = 2
/etc/odbc.ini
[MYSQL-DNS]
Driver =MySQL
Description = MySQL connection to ‘My Voice’ database
Trace = Yes
TraceFile = /tmp/odbc.log
Server =localhost
Port =3306
Database =my_database
UserName =myuser
Password =mypass
Option = 3
Socket =/var/run/mysqld/mysqld.sock
/var/lib/asterisk/.profile
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
我也将 odbcinst.ini 和 odbc.ini 分别复制到 ~/.odbcinst.ini 和 ~/.odbc.ini 并复制到 /var/lib/asterisk/ 只是为了打消疑虑。
res_odbc.conf
[ENV]
[my_database]
enabled => yes
dsn =>MYSQL-DNS
username => myuser
password => mypass
pre-connect => yes
sanitysql => select 1
;idlecheck => 3600
share_connections => yes
pooling => no
limit => 1
;isolation=repeatable_read
命令 odbcinst -j 输出
$ odbcinst -j
unixODBC 2.3.2
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
我想我之前做了一个象征性的 link 到 /usr/lib 从而找到 libmyodbc.so 输出
$ locate libmyodbc.so
/usr/lib/libmyodbc.so
/usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
我还添加了 x 权限即(从 644 更改为 755):
ls -alsh /usr/lib/x86_64-linux-gnu/odbc/
显示 755 *.so
日志输出
res_odbc.c: Connecting my_database
[Aug 1 09:32:40] WARNING[27846] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
[Aug 1 09:32:40] WARNING[27846] res_odbc.c: Failed to connect to my_database
[Aug 1 09:32:40] ERROR[27846] res_config_odbc.c: No database handle available with the name of 'my_database' (check res_odbc.conf)
您可以检查连接
isql -vvv MYSQL-DNS
那将清楚地告诉你哪里出了问题。
我用
解决了这个问题Install system DSN
$ odbcinst -i -s -l -f /etc/odbc.ini
Test your DSN install by lisinting your installed data sources.
$ odbcinst -s -q
我 运行 最近遇到了同样的问题,并通过添加到我的 res_odbc.conf
:
[ENV]
ODBCSYSINI => /etc
ODBCINI => /etc/odbc.ini
看来问题是 Asterisk 没有正确加载 .profile
。