Just for clarity on this issue: if you save your sessions to MSSQL you will
get an error because the MS SQL driver is expecting the timestamp to be a
string, but instead it is a datetime object due to the ".isoformat()" added
in version 2.19.
By modifying the line 1247 in globals.py, putting the .isoformat in
comment, the timestamp is again a string and it works again.
On Wednesday, January 11, 2023 at 12:08:54 PM UTC+1 Davidiam wrote:
> Hi,
>
> Has anyone found a solution for this? We are experiencing the same issue
> with 2.22.5 and storing the session in the db.
> As a work-around, we have removed the ".isoformat" from the line 1247 of
> the gluon\globals.py:
>
> modified_datetime=request.now, #.isoformat(),
>
> What would be the impact of our work-around? If we put isoformat in
> comment, the modified_datetime will be a string instead of a datetime
> object.
>
> On Thursday, June 4, 2020 at 6:30:30 AM UTC+2 Seth J wrote:
>
>> Thanks for pointing the function. But it looks like the error is
>> happening on the Session insert. See below *query* block:
>>
>>
>>
>> - Variables
>> e DataError('22007', '[22007] [Microsoft][ODBC SQL...e from character
>> string. (241) (SQLExecDirectW)')
>>
>> Context
>>
>> locals request session response
>> locals
>> e : DataError('22007', '[22007] [Microsoft][ODBC SQL...e from character
>> string. (241) (SQLExecDirectW)')
>> fields : [(<pydal.objects.Field object>, '172.20.252.61'),
>> (<pydal.objects.Field object>, 0), (<pydal.objects.Field object>,
>> '2020-06-04T00:21:23.665000'), (<pydal.objects.Field object>,
>> '5258b356-2b72-4a24-8868-710222ac0784'), (<pydal.objects.Field object>,
>> datetime.datetime(2020, 6, 4, 0, 21, 23, 665000)), (<pydal.objects.Field
>> object>,
>> '\x80\x02cgluon.globals\nSession\nq\x01}q\x02U\x05flashq\x03U\x00s\x85Rq\x04.')]
>> query : 'INSERT INTO
>> "web2py_session_PubView"("client_ip"...FscwpTZXNzaW9uCnEBfXECVQVmbGFzaHEDVQBzhVJxBC4=\');'
>> self : <pydal.adapters.mssql.MSSQL4 object>
>> table :
>> <Table web2py_session_PubView (id, locked, clien...me, modified_datetime,
>> unique_key, session_data)>
>>
>> On Wednesday, June 3, 2020 at 11:09:28 PM UTC-4, Dave S wrote:
>>>
>>>
>>>
>>> On Wednesday, June 3, 2020 at 2:04:02 PM UTC-7, Seth J wrote:
>>>>
>>>> I am not sure how to view the query sent to MSSQL.
>>>>
>>>
>>> Does this help/?
>>> <URL:
>>> https://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#_lastsql
>>> >
>>>
>>>
>>>
>>>
>>>> Here's a little more from the error record:
>>>>
>>>>
>>>> -
>>>>
>>>> *File C:\inetpub\wwwroot\gluon\packages\dal\pydal\adapters\base.py
>>>> in insert at line 539* code arguments variables
>>>> Function argument list
>>>>
>>>> (self=<pydal.adapters.mssql.MSSQL4 object>, table=<Table
>>>> web2py_session_PubView (id, locked, clien...me, modified_datetime,
>>>> unique_key, session_data)>, fields=[(<pydal.objects.Field object>,
>>>> '172.20.145.208'), (<pydal.objects.Field object>, 0),
>>>> (<pydal.objects.Field
>>>> object>, '2020-06-03T00:26:05.296000'), (<pydal.objects.Field object>,
>>>> 'affc9c47-0085-45dc-8352-12549c7f93dc'), (<pydal.objects.Field object>,
>>>> datetime.datetime(2020, 6, 3, 0, 26, 5, 296000)), (<pydal.objects.Field
>>>> object>,
>>>>
>>>> '\x80\x02cgluon.globals\nSession\nq\x01}q\x02U\x05flashq\x03U\x00s\x85Rq\x04.')])
>>>>
>>>>
>>> You've got a date conversion error. Do you need to specify a format
>>> string? Is the ISO 'T' causing problems with a format that expects a
>>> space? How have you defined the field?
>>>
>>> /dps
>>>
>>>
>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/d0e07c9d-2cde-4b34-81a3-3e4160f4cf78n%40googlegroups.com.