Вопрос

Я добавил строковое поле в свой постоянный класс гибернации и перезапустил приложение.Он запустил 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.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top