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