Hibernate не будет загружать определенную таблицу под другой ОС - PullRequest
0 голосов
/ 05 января 2012

Я использую Hibernate и MySQL.

Я разрабатываю Java-приложение в основном на Windows. Все таблицы созданы строчными.

Когда я развернул его на сервере Linux, я заметил, что таблицы теперь находятся в правильном корпусе (соглашение об именовании Java). Это нормально и все, но по какой-то причине один из моих списков oneToMany не загружен.

Я не использую другие запросы, кроме "from" + class.getName ()

Я попытался изменить * lower_case_table_names = 2 * в my.conf , чтобы оно совпадало с окнами, однако это не помогло.

Есть еще идеи?


На самом деле, это было глупо. Это была моя логика в приложении, которая вызвала проблему, я пытался сделать частичную выборку.

1 Ответ

2 голосов
/ 05 января 2012

Вы выбрали неправильный вариант, цитата из руководства:
http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

lower_case_table_names =
0
Имена таблиц и баз данных хранятся на диске с использованием регистра, указанного в операторе CREATE TABLE или CREATE DATABASE. Сравнение имен чувствительно к регистру. Вы не должны устанавливать эту переменную равной 0, если вы используете MySQL в системе с именами файлов без учета регистра (например, Windows или Mac OS X). Если вы зададите для этой переменной значение 0 с параметром --lower-case-table-names = 0 в файловой системе без учета регистра и получите доступ к именам таблиц MyISAM, используя разные регистры букв, это может привести к повреждению индекса.

1
Имена таблиц хранятся в нижнем регистре на диске, а сравнения имен не чувствительны к регистру. MySQL преобразует все имена таблиц в нижний регистр при хранении и поиске. Это также относится к именам баз данных и псевдонимам таблиц.

2
Имена таблиц и баз данных хранятся на диске с использованием буквенного регистра, указанного в операторе CREATE TABLE или CREATE DATABASE, но MySQL преобразует их в нижний регистр при поиске. Сравнение имен не чувствительно к регистру. Это работает только в файловых системах, которые не чувствительны к регистру! Имена таблиц InnoDB хранятся в нижнем регистре, как для lower_case_table_names = 1.

Вариант 2 никогда не будет работать в Linux, потому что эта система чувствительна к регистру.
В Linux и всех других системах вам нужно использовать опцию 1.

Тогда ваши проблемы с чувствительностью к регистру пройдут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...