[SR-Users] kamcli db sqlite / posgresql error

beer Ll llcfhllml at gmail.com
Thu Apr 22 09:25:23 CEST 2021


Hi Daniel


On Thu, Apr 22, 2021 at 8:57 AM Daniel-Constantin Mierla <miconda at gmail.com>
wrote:

> Hello,
>
> at least some of the new errors are not the same, they are related to
> unique key conflict, see the bottom of the traces:
>
> sqlite3.IntegrityError: UNIQUE constraint failed: subscriber.username,
> subscriber.domain
>
> sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint
> failed: subscriber.username, subscriber.domain
> [SQL: insert into subscriber (username, domain, password, ha1, ha1b)
> values ('test', 'sip.test.dev', 'passwordtest',
> '96a1efd95bcd6e8e573d07ebdacab623', '025f1dc363fa8c1ce1d7f2069d94ed0f')]
>
> Regarding the subscriber show command, do you have any outstyle
> configuration option set?
>
> What is the version of your tabulate package?
>

sqlite> .show
        echo: off
         eqp: off
     explain: auto
     headers: off
        mode: list
   nullvalue: ""
      output: stdout
colseparator: "|"
rowseparator: "\n"
       stats: off
       width:
    filename: /etc/kamailio/kamailio.db

(venv) kamailio-BT:/usr/src/kamclienv # pip3 show tabulate
Name: tabulate
Version: 0.8.9
Summary: Pretty-print tabular data
Home-page: https://github.com/astanin/python-tabulate
Author: Sergey Astanin
Author-email: s.astanin at gmail.com
License: MIT
Location: /usr/src/kamclienv/venv/lib/python3.7/site-packages
Requires:
Required-by: kamcli


regards


> Cheers,
> Daniel
> On 21.04.21 23:24, beer Ll wrote:
>
> Hi Daniel
> many thanks for yours commits in git  kamcli.
>
> I try the new version but my errors are the same
>
> (venv) kamailio-BT:/usr/src/kamclienv/kamcli # kamcli -c
> /etc/kamcli/kamcli.ini.sqlite subscriber show
> Traceback (most recent call last):
>   File "/usr/src/kamclienv/venv/bin/kamcli", line 33, in <module>
>     sys.exit(load_entry_point('kamcli', 'console_scripts', 'kamcli')())
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 829, in __call__
>     return self.main(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 782, in main
>     rv = self.invoke(ctx)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 1259, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 1259, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 1066, in invoke
>     return ctx.invoke(self.callback, **ctx.params)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 610, in invoke
>     return callback(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
> line 73, in new_func
>     return ctx.invoke(f, obj, *args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 610, in invoke
>     return callback(*args, **kwargs)
>   File "/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py", line
> 235, in subscriber_show
>     ioutils_dbres_print(ctx, oformat, ostyle, res)
>   File "/usr/src/kamclienv/kamcli/kamcli/ioutils.py", line 70, in
> ioutils_dbres_print
>     gstring = tabulate(allrows, headers=res.keys(), tablefmt=ostyle)
>   File "/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
> line 1529, in tabulate
>     tabular_data, headers, showindex=showindex
>   File "/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
> line 1162, in _normalize_tabular_data
>     "headers for a list of dicts is not a dict or a keyword"
> ValueError: headers for a list of dicts is not a dict or a keyword
> (venv) kamailio-BT:/usr/src/kamclienv/kamcli # kamcli -c
> /etc/kamcli/kamcli.ini.sqlite subscriber add test passwordtest
> Traceback (most recent call last):
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 1706, in _execute_context
>     cursor, statement, parameters, context
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py",
> line 716, in do_execute
>     cursor.execute(statement, parameters)
> sqlite3.IntegrityError: UNIQUE constraint failed: subscriber.username,
> subscriber.domain
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
>   File "/usr/src/kamclienv/venv/bin/kamcli", line 33, in <module>
>     sys.exit(load_entry_point('kamcli', 'console_scripts', 'kamcli')())
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 829, in __call__
>     return self.main(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 782, in main
>     rv = self.invoke(ctx)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 1259, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 1259, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 1066, in invoke
>     return ctx.invoke(self.callback, **ctx.params)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 610, in invoke
>     return callback(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
> line 73, in new_func
>     return ctx.invoke(f, obj, *args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py", line
> 610, in invoke
>     return callback(*args, **kwargs)
>   File "/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py", line
> 69, in subscriber_add
>     ha1b,
>   File "<string>", line 2, in execute
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py",
> line 390, in warned
>     return fn(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 3037, in execute
>     return connection.execute(statement, *multiparams, **params)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 1190, in execute
>     future=False,
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 1491, in _exec_driver_sql
>     distilled_parameters,
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 1749, in _execute_context
>     e, statement, parameters, cursor, context
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 1930, in _handle_dbapi_exception
>     sqlalchemy_exception, with_traceback=exc_info[2], from_=e
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py",
> line 211, in raise_
>     raise exception
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
> line 1706, in _execute_context
>     cursor, statement, parameters, context
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py",
> line 716, in do_execute
>     cursor.execute(statement, parameters)
> sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint
> failed: subscriber.username, subscriber.domain
> [SQL: insert into subscriber (username, domain, password, ha1, ha1b)
> values ('test', 'sip.test.dev', 'passwordtest',
> '96a1efd95bcd6e8e573d07ebdacab623', '025f1dc363fa8c1ce1d7f2069d94ed0f')]
> (Background on this error at: http://sqlalche.me/e/14/gkpj)
>
> best regards
>
> On Wed, Apr 21, 2021 at 3:10 PM Daniel-Constantin Mierla <
> miconda at gmail.com> wrote:
>
>> Hello,
>> On 18.04.21 22:56, beer Ll wrote:
>>
>> Hi ,
>>
>> I have a server test with
>>
>> Debian Buster 10.9
>> kamailio 5.4.5
>> kamcli 2.0.0 (similar result with 3.0.0)
>>
>> I'm not able to use kamcli
>> with sqlite  : insert and select doesn't work
>> with pgsql :  insert works , select of empty table works , select table
>> with entry doesn't work
>>
>>
>> TEST WITH SQLITE
>> root at kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.sqlite subscriber
>> add test password
>> Traceback (most recent call last):
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 1706, in _execute_context
>>     cursor, statement, parameters, context
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py", line
>> 716, in do_execute
>>     cursor.execute(statement, parameters)
>> sqlite3.OperationalError: near "%": syntax error
>>
>> The above exception was the direct cause of the following exception:
>>
>> Traceback (most recent call last):
>>   File "/usr/bin/kamcli", line 11, in <module>
>>     load_entry_point('kamcli==2.0.0', 'console_scripts', 'kamcli')()
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 829,
>> in __call__
>>     return self.main(*args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782,
>> in main
>>     rv = self.invoke(ctx)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1259,
>> in invoke
>>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1259,
>> in invoke
>>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1066,
>> in invoke
>>     return ctx.invoke(self.callback, **ctx.params)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610,
>> in invoke
>>     return callback(*args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/decorators.py", line
>> 73, in new_func
>>     return ctx.invoke(f, obj, *args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610,
>> in invoke
>>     return callback(*args, **kwargs)
>>   File
>> "/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py", line
>> 43, in subscriber_add
>>     e.execute('insert into subscriber (username, domain, password, ha1,
>> ha1b) values (%s, %s, %s, %s, %s)', udata['username'], udata['domain'],
>> password, ha1, ha1b)
>>   File "<string>", line 2, in execute
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/deprecations.py",
>> line 390, in warned
>>     return fn(*args, **kwargs)
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 3037, in execute
>>     return connection.execute(statement, *multiparams, **params)
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 1190, in execute
>>     future=False,
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 1491, in _exec_driver_sql
>>     distilled_parameters,
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 1749, in _execute_context
>>     e, statement, parameters, cursor, context
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 1930, in _handle_dbapi_exception
>>     sqlalchemy_exception, with_traceback=exc_info[2], from_=e
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/compat.py", line
>> 211, in raise_
>>     raise exception
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line
>> 1706, in _execute_context
>>     cursor, statement, parameters, context
>>   File
>> "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py", line
>> 716, in do_execute
>>     cursor.execute(statement, parameters)
>> sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "%":
>> syntax error
>> [SQL: insert into subscriber (username, domain, password, ha1, ha1b)
>> values (%s, %s, %s, %s, %s)]
>> [parameters: ('test', 'sip.test.dev', 'password',
>> '4380ea9069e888b5fc92996495a0f481', '3a36aeb0df7f4504cc5d9b97dab540e5')]
>> (Background on this error at: http://sqlalche.me/e/14/e3q8)
>>
>> root at kamailio-BT:~# kamctl add  test password
>> -e sqlite_query: /usr/bin/sqlite3  /etc/kamailio/kamailio.db insert into
>> subscriber (username, domain,ha1,ha1b,password) values ('test','
>> sip.test.dev
>> ','4380ea9069e888b5fc92996495a0f481','3a36aeb0df7f4504cc5d9b97dab540e5','password');
>> -e new user 'test' added
>>
>> root at kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.sqlite subscriber
>> show
>> Traceback (most recent call last):
>>   File "/usr/bin/kamcli", line 11, in <module>
>>     load_entry_point('kamcli==2.0.0', 'console_scripts', 'kamcli')()
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 829,
>> in __call__
>>     return self.main(*args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782,
>> in main
>>     rv = self.invoke(ctx)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1259,
>> in invoke
>>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1259,
>> in invoke
>>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1066,
>> in invoke
>>     return ctx.invoke(self.callback, **ctx.params)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610,
>> in invoke
>>     return callback(*args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/decorators.py", line
>> 73, in new_func
>>     return ctx.invoke(f, obj, *args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610,
>> in invoke
>>     return callback(*args, **kwargs)
>>   File
>> "/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py", line
>> 118, in subscriber_show
>>     ioutils_dbres_print(ctx, oformat, ostyle, res)
>>   File "/usr/lib/python3/dist-packages/kamcli/ioutils.py", line 45, in
>> ioutils_dbres_print
>>     gstring = tabulate(allrows, headers=res.keys(), tablefmt=ostyle)
>>   File "/usr/local/lib/python3.7/dist-packages/tabulate.py", line 1529,
>> in tabulate
>>     tabular_data, headers, showindex=showindex
>>   File "/usr/local/lib/python3.7/dist-packages/tabulate.py", line 1162,
>> in _normalize_tabular_data
>>     "headers for a list of dicts is not a dict or a keyword"
>> ValueError: headers for a list of dicts is not a dict or a keyword
>>
>>
>> TEST WITH PGSQL
>> root at kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.pgsql subscriber
>> show
>> +------+------------+----------+------------+-------+--------+
>> | id   | username   | domain   | password   | ha1   | ha1b   |
>> +======+============+==========+============+=======+========+
>> +------+------------+----------+------------+-------+--------+
>> root at kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.pgsql subscriber
>> add test password
>> root at kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.pgsql subscriber
>> show
>> Traceback (most recent call last):
>>   File "/usr/bin/kamcli", line 11, in <module>
>>     load_entry_point('kamcli==2.0.0', 'console_scripts', 'kamcli')()
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 829,
>> in __call__
>>     return self.main(*args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782,
>> in main
>>     rv = self.invoke(ctx)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1259,
>> in invoke
>>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1259,
>> in invoke
>>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1066,
>> in invoke
>>     return ctx.invoke(self.callback, **ctx.params)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610,
>> in invoke
>>     return callback(*args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/decorators.py", line
>> 73, in new_func
>>     return ctx.invoke(f, obj, *args, **kwargs)
>>   File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610,
>> in invoke
>>     return callback(*args, **kwargs)
>>   File
>> "/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py", line
>> 118, in subscriber_show
>>     ioutils_dbres_print(ctx, oformat, ostyle, res)
>>   File "/usr/lib/python3/dist-packages/kamcli/ioutils.py", line 45, in
>> ioutils_dbres_print
>>     gstring = tabulate(allrows, headers=res.keys(), tablefmt=ostyle)
>>   File "/usr/local/lib/python3.7/dist-packages/tabulate.py", line 1529,
>> in tabulate
>>     tabular_data, headers, showindex=showindex
>>   File "/usr/local/lib/python3.7/dist-packages/tabulate.py", line 1162,
>> in _normalize_tabular_data
>>     "headers for a list of dicts is not a dict or a keyword"
>> ValueError: headers for a list of dicts is not a dict or a keyword
>>
>> root at kamailio-BT:~# kamctl show test
>> 1|test|sip.test.dev
>> |password|4380ea9069e888b5fc92996495a0f481|3a36aeb0df7f4504cc5d9b97dab540e5
>>
>> thanks for reporting!
>>
>> I could reproduce the sqlite problems, they seemed to be related to the
>> sql driver for sqlalchemy that was not supporting variadic number of
>> parameters to the sql query execution function. I replaced with string
>> formatting and now seems to work. Try with latest git version and report
>> back if there are still issues.
>>
>> The one for postgres I couldn't reproduce, but it was after a commit
>> related to output style default value. Although it didn't seem related, it
>> worked what I tried for postgres. Again, test now with latest git version
>> and if there is still a problem, provide updated traces.
>>
>> Cheers,
>> Daniel
>>
>> --
>> Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
>> Kamailio Advanced Training - Online
>> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>>   * https://www.asipto.com/sw/kamailio-advanced-training-online/
>>
>>
> _______________________________________________
> Kamailio (SER) - Users Mailing Listsr-users at lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
>
> --
> Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
> Kamailio Advanced Training - Online
> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>   * https://www.asipto.com/sw/kamailio-advanced-training-online/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210422/8c4a32c1/attachment.htm>


More information about the sr-users mailing list