What happen when you put back fake_migrate_all to false? Did they really get created in the database?
In which context are you needing to do this? If you try to recreate your DB in a new environnement you can simply delete databases/ folder content and set migrate to true... Richard On Thu, Apr 21, 2016 at 2:43 PM, Gael Princivalle <[email protected] > wrote: > Version is 2.12.3. > >I believe you need to set both migrate=True and fake_migrate_all=True > for the fake migrate to regenerate the .tables files. > Thanks in fact with both to True all table files have been recreated. > > > Il giorno giovedì 21 aprile 2016 05:33:37 UTC+2, Michael Beller ha scritto: >> >> It sounds like you need to update the .tables files to match your >> database and models. >> >> I believe you need to set both migrate=True and fake_migrate_all=True for >> the fake migrate to regenerate the .tables files. >> >> Here's the logic in the book: >> >> http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer?search=fake#Migration-control-summary >> >> Have you tried setting both migrate and fake_migrate_all to True? >> >> On Wednesday, April 20, 2016 at 4:34:50 PM UTC-4, Gael Princivalle 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 [email protected]. > 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

