问题描述
问题:我正在使用AsteriskNow,它在VirtualBox中运行星号2.0服务器.我想使用ODBC模块将Asterisk与MySQL数据库连接.但是失败了.当我以asterisk * CLI> odbc show开头时,命令提示符显示没有这样的命令ODBC SHOW"
Problems: I am using AsteriskNow which running asterisk 2.0 server in VirtualBox. And i want to connect Asterisk with MySQL databases using ODBC modules. But it fails. When i started with asterisk*CLI> odbc show The command prompt shows that "No such command ODBC SHOW"
我的目标:在星号中配置ODBC,以直接,动态地从Asterisk的拨号计划访问MySQL.
My Objectives: configure ODBC in asterisk to access MySQL from Asterisk's dialplan directly and dynamically.
我做了什么:我在VirtualBox中安装了AsteriskNow.星号的版本是2.0,CentOS的版本是5.8.我首先通过
What i did: I installed my AsteriskNow in VirtualBox. The version of asterisk is 2.0, the CentOS version 5.8 final. I firstly installed related Linux RPMs by
yum -y install unixODBC-devel
yum -y install libdbi-dbd-mysql
yum -y install mysql-connector-odbc
我的详细配置文件如下:
My detail configured files are as follows:
/etc/odbc.ini
/etc/odbc.ini
[asterisk-connector]
Description = MySQL connection to 'asterisk' database
Driver = MySQL
Database = asterisk
Server = localhost
UserName = root
Password = mypassword
Port = 3306
Socket = /var/lib/mysql/mysql.sock
/etc/odbcinst.ini
/etc/odbcinst.ini
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC-libs package
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc3_r.so
Setup = /usr/lib/libodbcmyS.so
;Driver64 = /usr/lib64/libmyodbc3_r.so
;Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
/etc/asterisk/res_odbc.conf
/etc/asterisk/res_odbc.conf
[asterisk]
enabled=>yes
dsn=>asterisk-connector
;dsn=>asterisk
username=>root
password=>mypassword
pooling=>no
limit=>0
pre-connect=>yes
当我使用"isql"命令连接MySQL数据库时,它工作正常
When i used "isql" command to connect MySQL databases, it works fine
但是当我在CLI中启动控制台时,输入命令 odbc show .它显示 没有这样的命令"odbc show"
But when i started the console in CLI, input command odbc show . it shows No SUCH COMMAND "odbc show "
我在这里感到困惑,不知道如何解决.我用Google搜索了它,发现有人建议通过加载res_odbc.so模块来解决它.因此,我浏览了modules.conf文件,并将这些修改添加到文件中
And i am confusing here, and do not know how to solve it. I googled it and find someone recommend to solve it by having the res_odbc.so module loaded. Thus i went through the file modules.conf and add those modification into files
autoload=yes
preload => res_odbc.so
preload => res_config_odbc.so
修改后,完整文件如下"/etc/asterisk/modules
After being modified, the complete file is as follow"/etc/asterisk/modules
;
; Asterisk Module Loader configuration file
;
;
[modules]
autoload=yes
;
; Any modules that need to be loaded before the Asterisk core has been
; initialized (just after the logger has been initialized) can be loaded
; using 'preload'. This will frequently be needed if you wish to map all
; module configuration files into Realtime storage, since the Realtime
; driver will need to be loaded before the modules using those configuration
; files are initialized.
;
; An example of loading ODBC support would be:
preload => res_odbc.so
preload => res_config_odbc.so
;
; As FreePBX is using Local as the channel for queue members we need to make sure
; that pbx_config.so and chan_local.so are preloaded. If not, queue members
; will be marked as invalid until app_queue is reloaded.
preload => pbx_config.so
preload => chan_local.so
;
; Uncomment the following if you wish to use the Speech Recognition API
;preload => res_speech.so
;
; If you want, load the GTK console right away.
; KDE console is obsolete and was removed from Asterisk 2008-01-10
;
noload => pbx_gtkconsole.so
;load => pbx_gtkconsole.so
noload => pbx_kdeconsole.so
;
; Intercom application is obsoleted by
; chan_oss. Don't load it.
;
noload => app_intercom.so
;
; DON'T load the chan_modem.so, as they are obsolete in * 1.2
noload => chan_modem.so
noload => chan_modem_aopen.so
noload => chan_modem_bestdata.so
noload => chan_modem_i4l.so
; Trunkisavail is a broken module supplied by Trixbox
noload => app_trunkisavail.so
; Ensure that format_* modules are loaded before res_musiconhold
;load => format_ogg_vorbis.so
load => format_wav.so
load => format_pcm.so
; format_au.so is removed from Asterisk 1.4 and later, remove ; to enable
;load => format_au.so
; This isn't part of 'Asterisk' iteslf, it's part of asterisk-addons. If this isn't
; installed, asterisk will fail to start. But it does need to go here for native MOH
; to work using mp3's.
; Note that on a system with a high number of calls, using a compressed audio format for
; musiconhold takes CPU resources. Converting these files to ulaw/alaw makes the job
; much easier for your CPU.
load => format_mp3.so
load => res_musiconhold.so
;
; Load either OSS or ALSA, not both
; By default, load no console driver
;
noload => chan_alsa.so
noload => chan_oss.so
;
noload => app_directory_odbcstorage.so
noload => app_voicemail_odbcstorage.so
完成此操作后,我返回了CLI控制台以重新加载res_odbc.so.但是找不到res_odbc.so
After did this, i went back the CLI console to reload the res_odbc.so. But it failed to find the res_odbc.so
我需要有人给我一些有关解决ODBC连接问题的提示.
I need someone give me hints on solving the ODBC connections problems.
推荐答案
在AsteriskNOW环境中,要获取res_odbc.so
(这是向Asterisk提供ODBC资源的模块),您需要安装asterisk-odbc
程序包
In the AsteriskNOW environment, to get res_odbc.so
, which is the module that provides the ODBC resource to Asterisk, you need to have the asterisk-odbc
package installed.
(取决于关于package.asterisk.org存储库的AsteriskNOW安装配置方式,您可能需要asterisk18-odbc
或类似版本的软件包.)
(Depending on how your AsteriskNOW installation is configured with respect to the packages.asterisk.org repositories, you may need asterisk18-odbc
or a similar versioned package instead.)
如果具有res_odbc.so
(为此文件在/usr/lib/asterisk/modules
中签入)并且仍未正确加载,则应检查/var/log/asterisk
中的星号日志以获取与res_odbc
相关的消息,以获取更多信息.
If you have res_odbc.so
(check in /usr/lib/asterisk/modules
for this file) and it is still not loading correctly, you should check the Asterisk logs in /var/log/asterisk
for messages relating to res_odbc
for more information.
这篇关于ODBC连接错误:没有这样的命令"odbc show" ODBC连接在星号* CLI中失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!