Проблема с обновлением схемы гибернации
-
28-10-2019 - |
Вопрос
Я добавил строковое поле в свой постоянный класс гибернации и перезапустил приложение.Он запустил SchemaUpgrade и привел к нескольким ошибкам, подобным этой:
родовое словоОднако столбец был добавлен в БД.И вроде все нормально работает.За исключением тех ошибок, которые появляются каждый раз, когда я запускаю приложение.
Что я могу сделать, чтобы помочь ему создать эти индексы?БД - это MySQL, версия гибернации - 3.0.
Решение
Это не похоже на проблему гибернации.Если вы попытаетесь запустить вручную, вы увидите, что возникнет та же проблема.Изучая руководства по MySQL, я вижу, что "errno: 150" означает:
<цитата>Если вы повторно создаете таблицу, которая была отброшена, она должна иметь определение, которое соответствует ограничениям внешнего ключа, на которые она ссылается.Он должен иметь правильные имена и типы столбцов, а также индексы по ссылочным ключам, как указано ранее.Если они не удовлетворены, MySQL возвращает номер ошибки 1005 и ссылается на ошибку 150 в сообщении об ошибке.
http://dev.mysql.com / doc / refman / 5.5 / en / innodb-external-key-constraints.html
Другие советы
Также убедитесь, что TABLE_COLLATION между ссылочным и референтным столбцами одинаковы ... в противном случае вы также получите эту ошибку.
Для меня проблема была решена заменой всех таблиц Engine на InnoDB.
Вот как это сделать вручную: