2 Stimmen

ODBC-Verbindungsfehler: Kein solcher Befehl "odbc show" ODBC-Verbindung schlägt in asterisk*CLI fehl

Probleme: Ich benutze AsteriskNow, die Asterisk 2.0 Server in VirtualBox läuft. Und ich möchte Asterisk mit MySQL-Datenbanken über ODBC-Module verbinden. Aber es schlägt fehl. Als ich mit asterisk*CLI> odbc show gestartet habe, zeigt die Eingabeaufforderung "No such command ODBC SHOW" an.

Meine Ziele: ODBC in Asterisk konfigurieren, um direkt und dynamisch auf MySQL aus dem Dialplan von Asterisk zuzugreifen.

Was ich getan habe: Ich habe mein AsteriskNow in VirtualBox installiert. Die Version von Asterisk ist 2.0, die CentOS Version 5.8 final. Ich installierte zunächst die entsprechenden Linux-RPMs von

yum -y install unixODBC-devel
yum -y install libdbi-dbd-mysql
yum -y install mysql-connector-odbc

Meine detailliert konfigurierten Dateien sind wie folgt:

/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

# 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

[asterisk]
enabled=>yes
dsn=>asterisk-connector
;dsn=>asterisk
username=>root
password=>mypassword
pooling=>no
limit=>0
pre-connect=>yes

Wenn ich den Befehl "isql" zum Verbinden von MySQL-Datenbanken verwende, funktioniert es einwandfrei enter image description here

Aber als ich die Konsole in CLI startete, gab ich den Befehl odbc anzeigen . es zeigt Kein SOLCHER BEFEHL "odbc show "

enter image description here

Und ich bin hier verwirrt und weiß nicht, wie ich das Problem lösen kann. Ich habe gegoogelt und jemanden gefunden, der empfiehlt, das Problem zu lösen, indem man das Modul res_odbc.so lädt. Also ging ich durch die Datei modules.conf und fügte diese Änderungen in die Dateien ein

autoload=yes
preload => res_odbc.so
preload => res_config_odbc.so

Nach der Änderung sieht die vollständige Datei wie folgt aus" /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 

Nachdem ich dies getan hatte, ging ich zurück in die CLI-Konsole, um die res_odbc.so neu zu laden. Aber die res_odbc.so wurde nicht gefunden enter image description here

Ich brauche jemanden, der mir Tipps zur Lösung der ODBC-Verbindungsprobleme gibt.

3voto

arheops Punkte 15146

Versuchen Sie, Folgendes zu tun:

asterisk -rvvv
module unload res_odbc.so
module load res_odbc.so

Und siehe Ausgabe.

2voto

zigg Punkte 18874

In der AsteriskNOW-Umgebung, um res_odbc.so das ist das Modul, das Asterisk die ODBC-Ressource zur Verfügung stellt, müssen Sie die asterisk-odbc Paket installiert.

(Je nachdem, wie Ihre AsteriskNOW-Installation in Bezug auf die packages.asterisk.org-Repositories konfiguriert ist, benötigen Sie möglicherweise asterisk18-odbc oder ein ähnliches versioniertes Paket zu verwenden).

Wenn Sie eine res_odbc.so (Einchecken /usr/lib/asterisk/modules für diese Datei) und sie wird immer noch nicht korrekt geladen, sollten Sie die Asterisk-Protokolle in /var/log/asterisk für Nachrichten zu folgenden Themen res_odbc für weitere Informationen.

0voto

ASMaitre Punkte 172

Beachten Sie, dass Sie bei Verwendung des Befehls isql eine Fehlermeldung erhalten (Unbekanntes Attribut UserName).

Versuchen Sie es mit dieser /etc/odbc.ini-Datei:

[asterisk-connector]
Description = MySQL connection to 'asterisk' database
Driver      = MySQL
DATABASE    = asterisk
SERVER      = localhost
USER        = root
PASSWORD    = mypassword
PORT        = 3306
Option      = 3

Ich weiß nicht, ob das für CentOS gilt, aber unter Debian musste ich Asterisk neu kompilieren und menuselect ausführen, damit es funktioniert. Um das zu tun, gehen Sie zu Ihrem Asterisk-Schriftarten-Verzeichnis:

$ ./configure

$ make clean

$ make menuselect

Bitte überprüfen Sie, ob die folgenden Module aktiviert sind:

[*] cdr_odbc

[*] cdr_adaptive_odbc

[*] func_odbc

[*] func_realtime

[*] pbx_realtime

[*] res_config_odbc

[*] res_odbc

und dann:

$ sudo make install

Ich hoffe, das hilft Ihnen.

0voto

fgvaz Punkte 1

Es scheint, dass Sie vergessen haben, einige wichtige Module hinzuzufügen, wenn Sie "make menuselect" überprüfen.

Außerdem, und das ist sehr wichtig, müssen Sie "limit=>1" in der Konfigurationsdatei, die Sie beschreiben (/etc/asterisk/res_odbc.conf), einrichten, wenn Sie mysql als relationale Datenbank verwenden oder die Zeile einfach auskommentieren. Wenn Sie der Orreilly-Anleitung folgen ( http://ofps.oreilly.com/titles/9781449332426/asterisk-DB.html ) können Sie die Errata einsehen ( http://oreilly.com/catalog/errata.csp?isbn=9780596517342 ).

0voto

Do

sudo service asterisk restart

Funktioniert wie ein Zauber

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X