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.