Проблема обновления Hibernate Schema - PullRequest
0 голосов
/ 03 февраля 2011

Я добавил строковое поле в свой постоянный класс гибернации и перезапустил приложение.Он запустил SchemaUpgrade и привел к нескольким ошибкам, подобным этой:

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)

Хотя столбец был добавлен в БД.И все вроде бы работает нормально.Кроме тех ошибок, которые появляются каждый раз, я запускаю приложение.

Что я могу сделать, чтобы помочь ему создать эти индексы?БД - MySQL, спящая версия - 3.0.

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

Это не похоже на проблему гибернации. Если вы попытаетесь запустить вручную, вы увидите, что вы получите ту же проблему. Просматривая руководства MySQL, я вижу, что «errno: 150» означает:

Если вы воссоздаете таблицу, которая была удалена, у нее должно быть определение, соответствующее ограничениям внешнего ключа, на которые она ссылается. У него должны быть правильные имена и типы столбцов, и он должен иметь индексы на ссылочных ключах, как указано ранее. Если они не удовлетворены, MySQL возвращает номер ошибки 1005 и ссылается на ошибку 150 в сообщении об ошибке.

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

1 голос
/ 20 ноября 2014

Для меня проблема была решена путем изменения всех таблиц Engine на InnoDB.

Вот как это сделать вручную:

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

1 голос
/ 07 марта 2012

Также убедитесь, что TABLE_COLLATION между ссылками и ссылками столбцов одинаковы ... в противном случае вы также получите эту ошибку.

...