which web2py version?

On Wed, Apr 20, 2016 at 4:34 PM, Gael Princivalle <gaelprinciva...@gmail.com
> wrote:

> Hello.
>
> I'm still having some pain with DAL connection strings and migrations.
>
> In one application my DAL connection string is like that:
> DAL('postgres://username:password@localhost:5432/postg_db', check_reserved
> =['all'], pool_size=1, entity_quoting=True, bigint_id=True, migrate=False,
> fake_migrate_all=False)
>
> The application works well, but in the databases folder I have only tables
> form ckeditor and scheduler.
> If I set fake_migrate_all=True and run the application tables are not
> recreated.
> If I set migrate=True a ticket says me that relation "auth_user" already
> exists.
> So I'm unable to make modifications to this db.
>
> My reference for migration is this Niphlod post but in this case I don't
> know how to found a solution:
> 1. Put your models exactly has the database tables are.
> 2. Do a fake migrate.
> 3. Remove fake migrate and set migrate=True
> 4. Do the changes you need in your model.
>
> What happens if you set migrate=False in the table definition ? the check
> between the model in db.py and the .table file is skipped, and web2py
> assumes that on the db the table reflect exactly what there is in the
> model
>
> What happens if you set fake_migrate=True in the table definition ?
> web2py assumes that on the db the table reflect exactly what there is in
> the model, the .table files are recreated
>
> What happens if you set fake_migrate_all=True in the DAL ? all .table
> files are recreated, and web2py assumes that on the db the db tables are
> reflecting the model.
>
> What happens if you set migrate=False in the DAL? whatever table has no a
> specific "migrate" parameter, the migrate=False is applied to every table
>
> This kind of errors can happen only if you messed with this logic, e.g.
> db.define_table('test', Field('test1'), migrate=True) #web2py create the
> test table with the columns id and test1
>
> then
> db.define_table('test', Field('test1'), Field('test2'), migrate=False,
> fake_migrate=True) # web2py assumes that you created manually on the db
> the column test2, and updates the .table file
>
> then
> db.define_table('test', Field('test1'), Field('test2')) # web2py sees no
> change between the .table file and the model, but if there's not the column
> on the db, when you try to use it you'll get the "no such column" error
>
> then you delete the 'test' .table file manually, then
> db.define_table('test', Field('test1'), Field('test2'), migrate=True) #web2py
> assumes that the 'test' table is not on the db, because the corresponding
> .table file is not there, so it tries to create it, and you get the error
> "table 'test' already exists on the db"
>
> or, you delete the 'test' .table file manually, and drop the table
> manually on the db then
> db.define_table('test', Field('test1'), migrate=False) #web2py assumes
> that the table is already there, and when you try to use it you get the
> error "table 'test' does not exist"
>
>
> Someone knows how can I resolve it ?
>
> --
> 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.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to