Can not add user in SQL resolver

30 views
Skip to first unread message

Nicke

unread,
Mar 23, 2017, 7:08:51 AM3/23/17
to privacyidea
Am trying to add user or edit users in a "users" database located in the same mysql server as privacyidea.
I have tried to add/edit user both within webgui and API which always result in the error message
'Session' object has no attribute '_model_changes'"

[2017-03-23 11:58:28,091][3165][140013674645248][ERROR][privacyidea.app:1423] Exception on /user/ [POST]
Traceback (most recent call last):
 
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response
= self.full_dispatch_request()
 
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
    rv
= self.handle_user_exception(e)
 
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
    reraise
(exc_type, exc_value, tb)
 
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
    rv
= self.dispatch_request()
 
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
   
return self.view_functions[rule.endpoint](**req.view_args)
 
File "/usr/lib/python2.7/dist-packages/privacyidea/api/lib/prepolicy.py", line 115, in policy_wrapper
   
return wrapped_function(*args, **kwds)
 
File "/usr/lib/python2.7/dist-packages/privacyidea/api/auth.py", line 313, in decorated_function
   
return f(*args, **kwargs)
 
File "/usr/lib/python2.7/dist-packages/privacyidea/api/user.py", line 173, in create_user_api
    r
= create_user(resolvername, attributes, password=password)
 
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/log.py", line 187, in log_wrapper
    f_result
= func(*args, **kwds)
 
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/user.py", line 485, in create_user
    uid
= y.add_user(attributes)
 
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/resolvers/SQLIdResolver.py", line 709, in add_user
   
self.db.commit()
 
File "/usr/lib/python2.7/dist-packages/sqlsoup.py", line 268, in commit
   
self.session.commit()
 
File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 150, in do
   
return getattr(self.registry(), name)(*args, **kwargs)
 
File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 813, in commit
   
self.transaction.commit()
 
File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, in commit
   
self._prepare_impl()
 
File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 361, in _prepare_impl
   
self.session.dispatch.before_commit(self.session)
 
File "/usr/lib/python2.7/dist-packages/sqlalchemy/event/attr.py", line 218, in __call__
    fn
(*args, **kw)
 
File "/usr/lib/python2.7/dist-packages/flask_sqlalchemy/__init__.py", line 162, in session_signal_before_commit
    d
= session._model_changes
AttributeError: 'Session' object has no attribute '_model_changes'



Machine is a new Ubuntu server 16.04. Privacyidea installed today from ubuntu repository, v1.18.1.


How do I troubleshoot this error message?

Nicke

unread,
Mar 23, 2017, 8:04:45 AM3/23/17
to privacyidea
CREATE TABLE `users` (
 
`userid` mediumint(8),
 
`username` varchar(255),
 
`email` varchar(255),
 
`password` varchar(255),
  PRIMARY KEY
(`userid`)
);


{
 "jsonrpc": "2.0",
 "signature": "15622475369983...",
 "versionnumber": "2.18.1",
 "version": "privacyIDEA 2.18.1",
 "result": {
 "status": true,
 "value": {
 "users": {
 "type": "sqlresolver",
 "data": {
 "Map": "{\"userid\": \"userid\", \"username\": \"username\", \"email\": \"email\", \"password\": \"password\" }",
 "Encoding": "",
 "Driver": "mysql",
 "Database": "users",
 "Editable": "1",
 "Server": "127.0.0.1",
 "Limit": "500",
 "User": "users",
 "poolTimeout": "",
 "Table": "users",
 "Password": "ZyV2r1xxxxAO83d",
 "Port": "3306"
 },
 "resolvername": "users"
 }
 }
 },
 "time": 1490270412.660811,
 "id": 1
}

POST https://aaa.example.com/user/

{
 
"jsonrpc": "2.0",
 
"signature": "2518239733490006699...",
 
"detail": null,
 
"version": "privacyIDEA 2.18.1",
 
"result": {
 
"status": false,
 
"error": {
 
"message": "'Session' object has no attribute '_model_changes'",
 
"code": -500
 
}
 
},
 
"time": 1490270564.568782,
 
"id": 1
}


Cornelius Kölbel

unread,
Mar 26, 2017, 6:00:28 PM3/26/17
to privacyidea
Hi Nicke,

you can use this script, to create a SQL DB writable user resolver.

Or take a look at the script to fix your table.

Kind regards
Cornelius

Nicke

unread,
Mar 27, 2017, 3:08:06 AM3/27/17
to privacyidea
Hello
Thanks for the kind response. The script works and have created a nice sqlite database for me.
But the problem does still exist, same 
'Session' object has no attribute '_model_changes'
error when trying to add a user to this new sqlite database.

Where do I start when troubleshooting this?

Cornelius Kölbel

unread,
May 3, 2017, 6:48:15 PM5/3/17
to privacyidea
Hi Nicke

I think we have found this issue and fixed it in the current master branch.
It will be part of release 2.19 in roughly 3 weeks.

Kind regards
Cornelius
Reply all
Reply to author
Forward
0 new messages