Question

J'ai ajouté un champ de chaîne à ma classe persistante Hibernate et redémarré l'application. Il a commencé SchemaUpgrade et a abouti à plusieurs erreurs comme celle-ci:

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)

La colonne a cependant été ajoutée à la base de données. Et tout semble bien fonctionner. Sauf Fot ces erreurs, sortant à chaque fois, je commence l'application.

Que puis-je faire pour l'aider à créer ces index? DB est MySQL, la version hibernate est 3.0.

Était-ce utile?

La solution

Cela ne ressemble pas à un problème d'hibernate. Si vous essayez de courir manuellement, vous verrez que vous obtiendrez le même problème. En regardant les manuels MySQL, je vois que "Errno: 150" signifie:

Si vous recréez une table qui a été supprimée, elle doit avoir une définition conforme aux contraintes de clés étrangères qui le faisaient référence. Il doit avoir les bons noms et types de colonnes, et il doit avoir des index sur les clés référencées, comme indiqué précédemment. Si ceux-ci ne sont pas satisfaits, MySQL renvoie le numéro d'erreur 1005 et fait référence à l'erreur 150 dans le message d'erreur.

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-ctrensraintes.html

Autres conseils

Assurez-vous également que la table_collation entre les colonnes référencées et référentes est la même ... sinon vous obtenez également cette erreur.

Pour moi, le problème a été résolu en changeant tous les moteurs de tables en innodb.

Voici comment le faire manuellement:

https://stackoverflow.com/a/9492183/1988704

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top