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/3893e205-f7db-4483-97ee-1131aee9d4b5o%40googlegroups.com.

Reply via email to