Yate Community Forum
Yate server => Other Yate server issues => Topic started by: iKenny on February 18, 2013, 04:57:55 AM
-
Hello.
I have a problem with connecting yate to mysql database. I want to store call history in to mysql database
My mysql server is on the same machine as yate.
OS Ubuntu 12.04
The output message in debug mode is:
Sniffed 'database' time=1361183648.475115
thread=0x88a6cc0 'Engine Worker'
data=(nil)
retval='(null)'
param['account'] = 'yate'
param['query'] = 'UPDATE cdrs SET ended = 1 WHERE ended IS NULL OR ended = 0'
param['results'] = 'false'
Returned false 'database' delay=0.001216
thread=0x88a6cc0 'Engine Worker'
data=(nil)
retval='(null)'
param['account'] = 'yate'
param['query'] = 'UPDATE cdrs SET ended = 1 WHERE ended IS NULL OR ended = 0'
param['results'] = 'false'
My register config
[call.cdr]
; Queries for the CDR updating message
; critical: boolean: Reject all registrations and routing if query fails
;critical=yes
;initquery=UPDATE cdr SET ended=true WHERE ended IS NULL OR NOT ended
;cdr_initialize=INSERT INTO cdr VALUES(TIMESTAMP 'EPOCH' + INTERVAL '${time} s','${chan}','${address}','${direction}','${billid}','${caller}','${called}',INTERVAL '${duration} s',INTERVAL '${billtime} s',INTERVAL '${ringtime} s','${status}','${reason}',false)
;cdr_update=UPDATE cdr SET address='${address}',direction='${direction}',billid='${billid}',caller='${caller}',called='${called}',duration=INTERVAL '${duration} s',billtime=INTERVAL '${billtime} s',ringtime=INTERVAL '${ringtime} s',status='${status}',reason='${reason}' WHERE chan='${chan}' AND time=TIMESTAMP 'EPOCH' + INTERVAL '${time} s'
;cdr_finalize=UPDATE cdr SET address='${address}',direction='${direction}',billid='${billid}',caller='${caller}',called='${called}',duration=INTERVAL '${duration} s',billtime=INTERVAL '${billtime} s',ringtime=INTERVAL '${ringtime} s',status='${status}',reason='${reason}',ended=true WHERE chan='${chan}' AND time=TIMESTAMP 'EPOCH' + INTERVAL '${time} s'
critical=no
initquery=UPDATE cdrs SET ended = 1 WHERE ended IS NULL OR ended = 0
cdr_initialize=INSERT INTO cdrs VALUES(NULL, '${time}', '${billid}', '${chan}', '${address}', '${caller}', '${called}', '${billtime}', '${ringtime}', '${duration}', '${direction}', '${status}', '${reason}', 0)
cdr_update=UPDATE cdrs SET address = '${address}', direction = '${direction}', billid = '${billid}', caller = '${caller}', called = '${called}', duration = '${duration}', billtime = '${billtime}', ringtime = '${ringtime}', status = '${status}', reason = '${reason}' WHERE chan = ''${chan}' AND time = CAST(${time} AS UNSIGNED)
cdr_finalize=UPDATE cdrs SET address = '${address}', direction = '${direction}', billid = '${billid}', caller = '${caller}', called = '${called}', duration = '${duration}', billtime = '${billtime}', ringtime = '${ringtime}', status = '${status}', reason = '${reason}', ended = 1 WHERE chan = '${chan}' AND time = CAST(${time} AS UNSIGNED)
accound=yate
My mysqldb.conf is
[yate]
host=127.0.0.1
port=3306
database=yate
user=root
password=password
In modules i entered
pgsqldb.yate=true
register.yate=true
mysqldb.yate=true
i vahe installed yate-mysql package and recompiled yate.
But no result.
Thanks for help.
-
Check the example at the bottom:
http://docs.yate.ro/wiki/Register_Database_Schema
also disable pgsqldb.yate if you only use mysql.
-
You mean that the problem is in MySQL configuration, not in yate?
-
What actually is your problem? Please describe it in more detail. I don't see any.
-
Returned false 'database'
And when i make call from one softphone to another databsase stays empty.
I can connet to database through localhost and i can make enterys. But yate doesn't write cdr data in database.
-
1) disable pgsqldb.yate if you do not need it
2) check that in register.conf in section [general] call.cdr=yes is set, default is call.cdr=no
3) check what the name was you configured in mysqldb.conf as database connection name (the thing in []), default is [default]
4) set this name in register.conf in section [default] on property account= so in this case account=default - that tells yate to use the default-connection for all queries if not specified otherwise.
describe your problem in more detail if it still exists, maybe with debug output (start yate with yate -vvvvvvv and show us what you got, the more -v the more detailed the output is)
-
Found the solution, on very x 10 verbose start i have found that the mysql module wasn't created. The problem was that was need to be installed package yate-mysql and after that yate must be compiled with yate-mysql.
-
Good.
Just curious:
Do you use the queries from the website I mentioned or do you use your own queries?
Did you enabled connection pooling?