2015-08-11 13 views
9

Ich versuche Realtime-Endpunkte auf Asterisk 13 mit MySQL ODBC (libmyodbc5a) -Treiber einzurichten. So beobachtet, dass Asterisk Server abstürzt, sobald ein Endpunkt registriert wurde. Das Message-Protokoll zeigt:Asterisk stürzt bei Endpunktregistrierung ab

res_odbc.c: SetConnectAttr (Txn isolation) returned an error: HY000: [MySQL][ODBC 5.3(w) Driver]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '7' at line 1 
res_config_odbc.c: SQL Prepare failed![SELECT * FROM ps_domain_aliases WHERE id = ?] 
res_odbc.c: Connection is down attempting to reconnect... 
res_odbc.c: Connecting DE-VOICE 
res_odbc: Connected to DE-VOICE [DE-VOICE-DNS] 
SetConnectAttr (Txn isolation) returned an error: HY000: [MySQL][ODBC 5.3(w) Driver]Lost connection to MySQL server during query 

Jede Hilfe wird

+0

vielleicht [diese] (http://dba.stackexchange.com/questions/10578/client-times- out-while-mysql-query-remains-running) kann helfen? –

Antwort

0

Die Fehlermeldung von MySQL apperciated werden zeigt, dass eine Anfrage an den Server gesendet wird, dass es nicht analysieren kann. Ich stelle mir vor, was tatsächlich an MySQL gesendet wird, ist nicht ganz das, was im Fehlerprotokoll gesagt wird (SELECT * FROM ps_domain_aliases WHERE id =?), Da der Syntaxfehler '7' beinhaltet. Ich vermute, dass ODBC die Abfrage erweitert, aber vielleicht nicht ganz richtig. Wenn ich dies debuggen würde, würde ich zuerst tcpdump oder ein anderes Paketerfassungs-Dienstprogramm verwenden, um den Datenverkehr auf dem MySQL-Port (standardmäßig 3306) zu erfassen und herauszufinden, was tatsächlich gesendet wird. Dann, nach der Überprüfung, war es Müll, ich würde ODBC-Treiber und Asterisk aktualisieren, dann vielleicht versuchen, Asterisk zu konfigurieren, um eine andere Möglichkeit zu verwenden, um mit MySQL zu sprechen.

0

Sie können einen erwarteten Wert von "?" Führen Sie die Abfrage in der Abfrage über NoOp aus, und führen Sie dann die resultierende Abfrage in mysql aus, um festzustellen, ob tatsächlich das erwartete Ergebnis IN mysql angezeigt wird.

Sie können auch das Debuggen ermöglichen und die Ausführlichkeit erhöhen innerhalb Stern, um zu sehen, was tatsächlich geschieht ..

Versuchen Sie auch, die ID zu setzen =? in '' Beispiel:

SELECT * FROM ps_domain_aliases WHERE id = "?" 

Ich weiß, dass Sie eine ganze Zahl senden, aber immer noch ..