É comum ocorrerem errors de migração no DAL do web2py. Seja porque foi feito um restore diretamente via banco de dados, alguma alteração direta no banco, ou outro motivo.
Se a instalação é nova, e o banco foi criado/restaurado a partir de um backup, normalmente basta alterar as linhas no arquivo db.py de :
db = DAL(myconf.get('db.uri'),
pool_size=myconf.get('db.pool_size'),
migrate=True,
check_reserved=['all'])
para:
db = DAL(myconf.get('db.uri'),
pool_size=myconf.get('db.pool_size'),
fake_migrate_all=True,
#migrate=True,
check_reserved=['all'])
Faça essa alteração, rode uma vez, e volte para o padrão.
Ao deixar o fake_migrate ativado, ao se criar um novo campo ou tabela no web2py, ela não é criada no banco, levando o banco de dados informar o erro que o campo ou tabela não existe.
Nesse caso, é preciso fazer a alteração diretamente no banco de dados. O arquivo databases/sql.log pode ajudar com o sql que 'deveria' ter sido aplicado no banco, mas foi 'fake'. Em alguns casos mais complexos, os erros tem que ser corrigidos à mão.
Portanto, via de regra, não deixe o fake_migrate_all ativo por padrão.
Nenhum comentário:
Postar um comentário