2015-08-11 45 views
9

Próbuję skonfigurować punkty końcowe w czasie rzeczywistym na Asterisk 13 przy użyciu sterownika MySQL ODBC (libmyodbc5a). Zauważono, że po zarejestrowaniu punktu końcowego Asterisk Server ulega awarii. Dziennik Wiadomość pokazuje:Asterisk ulega awarii podczas rejestracji punktu końcowego.

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 

Każda pomoc będzie apperciated

+0

może [to] (http://dba.stackexchange.com/questions/10578/client-times- out-while-mysql-query-remains-running) może pomóc? –

Odpowiedz

0

Komunikat o błędzie z MySQL wskazuje, że zapytanie jest wysyłane do serwera, że ​​nie można analizować. Wyobrażam sobie, że to, co faktycznie jest wysyłane do MySQL, nie jest całkiem tym, co jest napisane w dzienniku błędów (SELECT * FROM ps_domain_aliases WHERE id =?), Ponieważ błąd składniowy dotyczy "7". Zgaduję, że ODBC rozszerza zapytanie, ale być może nie robi tego całkiem dobrze. Gdybym debugował to, pierwszą rzeczą, którą zrobiłbym, to użycie tcpdump lub innego narzędzia do przechwytywania pakietów, aby przechwycić ruch na porcie MySQL (domyślnie 3306) i dowiedzieć się, co właściwie jest wysyłane. Następnie po sprawdzeniu, czy było to śmieci, zaktualizowałem sterownik ODBC i gwiazdkę, a następnie prawdopodobnie spróbowałem skonfigurować Asterisk, aby użyć innego sposobu na rozmowę z MySQL.

0

można symulować oczekiwaną wartość "?" w zapytaniu uruchom go za pomocą NoOp, a następnie uruchom zapytanie wynikowe wewnątrz mysql, aby zobaczyć, czy faktycznie pokazuje oczekiwany wynik IN mysql.

Ponadto można włączyć debugowanie i zwiększyć szczegółowość od wewnątrz gwiazdką, aby zobaczyć, co się rzeczywiście dzieje ..

Spróbuj też umieścić id =? w '' przykład:

SELECT * FROM ps_domain_aliases WHERE id = "?" 

wiem wyślesz liczbę całkowitą, ale nadal ..