...but this error is not clear with me

Error ticket for "ITAsset"Ticket ID

127.0.0.1.2020-08-21.09-54-23.77579ea3-20b8-49ca-aed5-76c10960c92f
<class 'pyodbc.IntegrityError'> ('23000', u"[23000] [Microsoft][ODBC SQL 
Server Driver][SQL Server]Cannot insert the value NULL into column 'id', 
table 'itassetdb.dbo.asset_archive'; column does not allow nulls. INSERT 
fails. (515) (SQLExecDirectW); [23000] [Microsoft][ODBC SQL Server 
Driver][SQL Server]The statement has been terminated. (3621)")

insert a NULL value into culumn'id' on table asset_archive? Why?


Il giorno venerdì 21 agosto 2020 10:04:15 UTC+2, Andrea Fae' ha scritto:
>
> I think the problem with archiving is when I defined archive table in 
> mssql I defined a field named 'current_record" type int. Maybe type int is 
> not correct, isn't it?
> Thank you
>
> Il giorno venerdì 21 agosto 2020 09:43:14 UTC+2, Andrea Fae' ha scritto:
>>
>> Hello, some updates.
>> In the databases I can see only this (see attachment).
>> I'm trying to manage record versionin (table archiving). I create for 
>> example asset.archive in mssql but web2py doesn't "see" the table. In fact 
>> the table is not listend in the appadmin page.
>> The question is that tables definitions are not created in the databases 
>> folder, even if I put migrate=false in appconfig.ini and in db.py I typed 
>> migrate_fake=true... ???
>>
>>
>>
>> Il giorno giovedì 20 agosto 2020 16:57:26 UTC+2, Andrea Fae' ha scritto:
>>>
>>> UPDATES....
>>>
>>> in appconfig.ini I changed from migrate= true to migrate=false.
>>>
>>> tha system doesn't create me the sql.log and .table file definitions in 
>>> the folder databases, but the application seems start to work! How is 
>>> posisble?
>>>
>>>
>>> Il giorno giovedì 20 agosto 2020 16:45:35 UTC+2, Andrea Fae' ha scritto:
>>>>
>>>> Hello Villas, first al all...thank  you thank you thank you! But I 
>>>> didn't arrived to the end of the game yet. but I think I'm near with your 
>>>> suggestions.
>>>>
>>>> I followed the "easier solution" and, with a lot of effort, now I have 
>>>> my MSSQL database filled of my data.
>>>> But when I start tha application web2py I have this error:
>>>>
>>>> Error ticket for "ITAsset"Ticket ID
>>>>
>>>> 127.0.0.1.2020-08-20.16-37-26.91c5b362-833d-4bdc-afef-3b727fde37a8
>>>> <class 'pyodbc.ProgrammingError'> ('42S01', u"[42S01] [Microsoft][ODBC 
>>>> SQL Server Driver][SQL Server]There is already an object named 'sede' in 
>>>> the database. (2714) (SQLExecDirectW)")Versione
>>>> web2py™ Version 2.14.6-stable+timestamp.2016.05.10.00.21.47
>>>> Python Python 2.7.15: C:\Python27\python.exe (prefix: C:\Python27)
>>>> Traceback
>>>>
>>>> 1.
>>>> 2.
>>>> 3.
>>>> 4.
>>>> 5.
>>>> 6.
>>>> 7.
>>>> 8.
>>>> 9.
>>>> 10.
>>>> 11.
>>>> 12.
>>>> 13.
>>>> 14.
>>>> 15.
>>>> 16.
>>>> 17.
>>>> 18.
>>>> 19.
>>>>
>>>> Traceback (most recent call last):
>>>>   File "C:\web2py\gluon\restricted.py", line 227, in restricted
>>>>     exec ccode in environment
>>>>   File "c:/web2py/applications/ITAsset/models/db_asset.py" 
>>>> <http://127.0.0.1:8000/admin/default/edit/ITAsset/models/db_asset.py>, 
>>>> line 12, in <module>
>>>>     format='%(nome)s')
>>>>   File "C:\web2py\gluon\packages\dal\pydal\base.py", line 834, in 
>>>> define_table
>>>>     table = self.lazy_define_table(tablename,*fields,**args)
>>>>   File "C:\web2py\gluon\packages\dal\pydal\base.py", line 873, in 
>>>> lazy_define_table
>>>>     polymodel=polymodel)
>>>>   File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 482, in 
>>>> create_table
>>>>     self.create_sequence_and_triggers(query, table)
>>>>   File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 1369, 
>>>> in create_sequence_and_triggers
>>>>     self.execute(query)
>>>>   File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 1388, 
>>>> in execute
>>>>     return self.log_execute(*a, **b)
>>>>   File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 1382, 
>>>> in log_execute
>>>>     ret = self.get_cursor().execute(command, *a[1:], **b)
>>>> ProgrammingError: ('42S01', u"[42S01] [Microsoft][ODBC SQL Server 
>>>> Driver][SQL Server]There is already an object named 'sede' in the 
>>>> database. (2714) (SQLExecDirectW)")
>>>>
>>>>
>>>> I will attach you db.py and dbasset.py, my models and the sql.log 
>>>> generated...
>>>> I tested with all combination of "migrate" and "fake_migrate" but 
>>>> web2py try every time to create the table "sede and so the error.
>>>> Can you have another suggestion? when I will finish I inveted you yo a 
>>>> dinner in the restaurant! :-)
>>>>
>>>> thank you
>>>>
>>>>
>>>> Il giorno mercoledì 19 agosto 2020 12:32:20 UTC+2, villas ha scritto:
>>>>>
>>>>> *An easier solution for you could be this!*
>>>>> Simply specify your created_by/modified_by as extra fields (which 
>>>>> should side-step self-referencing probem).
>>>>> I didn't test it, but it seems like a good idea to me. You can then 
>>>>> use normal migrations etc.
>>>>>
>>>>>     auth.settings.extra_fields['auth_user']= [
>>>>>
>>>>>                      Field('is_active', 'boolean', default=True),
>>>>>                      Field('created_on', 'datetime', default=request.now),
>>>>>                      Field('created_by', 'integer', default=auth.user_id),
>>>>>                      Field('modified_on', 'datetime', update=request.now),
>>>>>                      Field('modified_by', 'integer', update=auth.user_id)
>>>>>
>>>>>     ]
>>>>>
>>>>>     auth.define_tables(... signature=False )
>>>>>
>>>>> *Otherwise, in answer to your questions...*
>>>>> migrate='asset_archive.table'
>>>>> Personally, I do not specify the table definition name as the one 
>>>>> given automatically by web2py is very good.  I just use 
>>>>> migrate=True/False.
>>>>> If you use migrate='asset_archive.table',  you are also specifying 
>>>>> migrate=True
>>>>>
>>>>> fake_migrate=True
>>>>> This is used to recreate the .table file without touching your DB.
>>>>> If you manually create and edit the fields in your DB,  you may wish 
>>>>> to recreate the .table definition file (hence fake_migrate).
>>>>>
>>>>> I am not sure how you are using the archiving etc,  but I do know 
>>>>> this:  
>>>>>
>>>>>    - you can manually create your own DB on-disk structure with 
>>>>>    whatever triggers, indexes etc you require.
>>>>>    - in web2py you can use define_table to create a web2py meta 
>>>>>    definition (which must be compatible with what is on disk!)
>>>>>    - you can use fake_migrate if you wish to create a .table 
>>>>>    definition file (which will reflect your web2py define_table)
>>>>>    - you can use migrate=False to prevent web2py from attempting to 
>>>>>    migrate the physical DB on-disk structure
>>>>>
>>>>> Using the above, the book explanation should make a little more 
>>>>> sense.  
>>>>>
>>>>>     
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Wednesday, 19 August 2020 09:43:42 UTC+1, Andrea Fae' wrote:
>>>>>
>>>>>> Hello Villas, unfortunately other problems to this game...
>>>>>> I used archiving, and so this type of table definitions
>>>>>>
>>>>>> db.define_table('asset_archive',
>>>>>>                 Field('current_record', db.asset),
>>>>>>                 db.asset,migrate='asset_archive.table')
>>>>>>
>>>>>> but I have the same problem regarding FOREIGN KEYS...no way to 
>>>>>> recreate the tables.
>>>>>>
>>>>>> Do I have to give up the record archiving? Waht do you think?
>>>>>>
>>>>>> If you can, please can you explain the meaning of fake_migrate? I 
>>>>>> never used and in the book is not very well explained. 
>>>>>>
>>>>>> Thank you
>>>>>>
>>>>>>
>>>>>>
>>>>>> Il giorno martedì 18 agosto 2020 22:38:50 UTC+2, villas ha scritto:
>>>>>>>
>>>>>>> I presume therefore that you need those fields.  This is the kind of 
>>>>>>> thing I do to get things working.  Please forgive me if I've missed 
>>>>>>> something.
>>>>>>>
>>>>>>>    - I would create those required fields manually in your database 
>>>>>>>    (without the constraint that causes the problem).
>>>>>>>    - Set auth.define_tables(migrate = True, fake_migrate=True)
>>>>>>>    - Run the app.  This will create the .table definition file in 
>>>>>>>    the databases dir.  You may have had to delete the old .table file.  
>>>>>>> If 
>>>>>>>    necessary delete that.
>>>>>>>    - Set auth.define_tables(migrate =False) again.
>>>>>>>
>>>>>>>
>>>>>>> Sorry if this seems strange, but it is a work around solution.
>>>>>>> I am hoping that someone will eventually fix this contraint problem 
>>>>>>> in pyDal.
>>>>>>>
>>>>>>>
>>>>>>> On Tuesday, 18 August 2020 20:51:57 UTC+1, Andrea Fae' wrote:
>>>>>>>>
>>>>>>>> Thank you Villas. I'm using option 2 and now I have the tables 
>>>>>>>> without "created_by" and "modified_by".
>>>>>>>> Now I will try to reset signature=true and see what will happen. If 
>>>>>>>> it causes the same error I could add but they will not managed 
>>>>>>>> automatically by web2py, or I'm wrong?
>>>>>>>> What do you suggest?
>>>>>>>> Thank you for your precious information.
>>>>>>>>
>>>>>>>> Il giorno lunedì 17 agosto 2020 14:24:25 UTC+2, villas ha scritto:
>>>>>>>>>
>>>>>>>>> Hi Andrea
>>>>>>>>> I was pleased to see you are making progress with the DB 
>>>>>>>>> connection etc.
>>>>>>>>> I can see why mssql does not like the cascade from the same 
>>>>>>>>> auth_user table.  This may be an issue which needs fixing...
>>>>>>>>> To get things moving, and this might not be ideal, but I propose 
>>>>>>>>> you consider either of these options:
>>>>>>>>>
>>>>>>>>>    1. Create manually your own tables without those contraints.  
>>>>>>>>>    You then set this:  auth.define_tables(... migrate=False ) so 
>>>>>>>>>    that pyDal skips creation. 
>>>>>>>>>    2. Do not include the signature fields with your auth.  
>>>>>>>>>    auth.define_tables(... signature=False )
>>>>>>>>>
>>>>>>>>> Incidentally,  I use option 2 and I therefore do not benefit from 
>>>>>>>>> the created and modified info,  but I could easily remedy this by 
>>>>>>>>> adding 
>>>>>>>>> the fields if I wished.
>>>>>>>>> Hope this helps.
>>>>>>>>>
>>>>>>>>>

-- 
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 web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/ec7b498f-9c61-47f8-9970-b93a573c403fo%40googlegroups.com.

Reply via email to