I have a task to change the backend database of kamailio to mongodb. I have updated the DBURL to a valid URL of mongodb. Kamailio startup successfully firsttime when i insert some documents into the version collection. But after a user registed into kamailio, a location collection will be created. In this case i stop kamailio and try to start kamailio again, kamailio failed to startup. The log is: Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:349]: db_mongodb_get_columns(): 20 columns returned from the query Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:158]: db_allocate_columns(): allocate 160 bytes for result names at 0x7f934f907a30 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:169]: db_allocate_columns(): allocate 80 bytes for result types at 0x7f934f8fe290 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[0] named: username Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[0] at 0x7f934f907b38 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:438]: db_mongodb_get_columns(): use DB1_STRING result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907b38)[0]=[username] (2) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[1] named: contact Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[1] at 0x7f934f907bb0 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:438]: db_mongodb_get_columns(): use DB1_STRING result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907bb0)[1]=[contact] (2) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[2] named: expires Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[2] at 0x7f934f907c28 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:428]: db_mongodb_get_columns(): use DB1_DATETIME result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907c28)[2]=[expires] (9) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[3] named: q Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[3] at 0x7f934f907ca0 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:423]: db_mongodb_get_columns(): use DB1_DOUBLE result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907ca0)[3]=[q] (1) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[4] named: callid Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[4] at 0x7f934f907d18 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:438]: db_mongodb_get_columns(): use DB1_STRING result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907d18)[4]=[callid] (2) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[5] named: cseq Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[5] at 0x7f934f907d90 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:413]: db_mongodb_get_columns(): use DB1_INT result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907d90)[5]=[cseq] (16) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[6] named: flags Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[6] at 0x7f934f907e08 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:413]: db_mongodb_get_columns(): use DB1_INT result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f907e08)[6]=[flags] (16) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[7] named: cflags Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[7] at 0x7f934f9150e0 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:413]: db_mongodb_get_columns(): use DB1_INT result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f9150e0)[7]=[cflags] (16) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[8] named: user_agent Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:403]: db_mongodb_get_columns(): allocate 16 bytes for RES_NAMES[8] at 0x7f934f915158 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:438]: db_mongodb_get_columns(): use DB1_STRING result type Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:467]: db_mongodb_get_columns(): RES_NAMES(0x7f934f915158)[8]=[user_agent] (2) Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: db_mongodb [mongodb_dbase.c:377]: db_mongodb_get_columns(): Found a field[9] named: received Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: ERROR: db_mongodb [mongodb_dbase.c:387]: db_mongodb_get_columns(): field [received] not found in result iterator Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: ERROR: db_mongodb [mongodb_dbase.c:752]: db_mongodb_store_result(): failed to set the columns Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: ERROR: db_mongodb [mongodb_dbase.c:931]: db_mongodb_query(): failed to store result Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: ERROR: db_mongodb [mongodb_dbase.c:940]: db_mongodb_query(): failed to do the query Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:79]: db_free_columns(): freeing 20 columns Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[0] at 0x7f934f907b38 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[1] at 0x7f934f907bb0 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[2] at 0x7f934f907c28 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[3] at 0x7f934f907ca0 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[4] at 0x7f934f907d18 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[5] at 0x7f934f907d90 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[6] at 0x7f934f907e08 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[7] at 0x7f934f9150e0 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:83]: db_free_columns(): freeing RES_NAMES[8] at 0x7f934f915158 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:96]: db_free_columns(): freeing result names at 0x7f934f907a30 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:101]: db_free_columns(): freeing result types at 0x7f934f8fe290 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: DEBUG: <core> [db_res.c:138]: db_free_result(): freeing result set at 0x7f934f8fe158 Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: ERROR: usrloc [udomain.c:457]: preload_udomain(): db_query failed Nov 3 18:53:38 kamailio-1 ./kamailio[40735]: ERROR: usrloc [usrloc_mod.c:429]: child_init(): child(1): failed to preload domain 'location'
The version of kamaiio is 5.0.4.
Closed #1300.
You have to set the db_insert_null parameter for usrloc module to 1:
* https://www.kamailio.org/docs/modules/stable/modules/usrloc.html#usrloc.p.db...
If that doesn't solve it, reopen.
I have tested the db_insert_null parameter, and it works, kamailio can startup successfully.Thanks.