Problema de atualização do esquema Hibernate
-
28-10-2019 - |
Pergunta
Eu adicionei um campo de string à minha classe persistente de hibernação e reiniciei o aplicativo.Ele iniciou o SchemaUpgrade e resultou em vários erros como este:
2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: alter table table_name add index FKCD10932052C35B33 (previewExample_id), add constraint FKCD10932052C35B33 foreign key (previewExample_id) references preview (id)
2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Can't create table 'dbName.#sql-59c_1cc' (errno: 150)
A coluna foi adicionada ao banco de dados.E tudo parece estar funcionando bem.Exceto por aqueles erros, que aparecem toda vez, eu inicio o aplicativo.
O que posso fazer para ajudá-lo a criar esses índices?DB é MySQL, a versão de hibernação é 3.0.
Solução
Não parece um problema de Hibernate.Se você tentar executar manualmente, verá que terá o mesmo problema.Olhando os manuais do MySQL, vejo que "errno: 150" significa:
Se você recriar uma tabela que foi eliminada, ela deve ter uma definição que esteja de acordo com as restrições de chave estrangeira que a fazem referência.Ele deve ter os nomes e tipos de coluna corretos e deve ter índices nas chaves referenciadas, conforme declarado anteriormente.Se eles não forem satisfeitos, o MySQL retornará o erro número 1005 e fará referência ao erro 150 na mensagem de erro.
http://dev.mysql.com / doc / refman / 5.5 / en / innodb-foreign-key-constraints.html
Outras dicas
Certifique-se também de que TABLE_COLLATION entre as colunas referenciadas e referentes são as mesmas ... caso contrário, você também obterá esse erro.
Para mim, o problema foi resolvido alterando todas as tabelas Engine para InnoDB.
Veja como fazer isso manualmente: