2010-03-21 2 views
3

Недавно я начал использовать Linux (Ubuntu 9.10) вместо окон. Я работаю над веб-приложением Java с Spring, MYSQL с jpa. Однако перед установкой linux я сделал резервный файл из базы данных, затем установил linux, установил MYSQL Query Browser и инструменты администратора, а с помощью инструмента Admin восстановил файл резервной копии, затем получил все таблицы и сделал простой оператор select из один из таблиц и получил результат нормально, и все, кажется, работает нормально.Получение данных с MYSQL под linux

Существует таблица USER, и есть определенный namedQuery, определяемый для получения пользователем по имени пользователя, проблема в том, что когда я передаю правильное имя пользователя, я все равно ничего не получаю!

Я действительно не знаю, в чем проблема! Приложение отлично работало под окнами!

Пожалуйста, помогите мне решить эту проблему?

Заранее спасибо.

ответ

2

Первое, что приходит в голову, это то, что имена таблиц MySQL чувствительны к регистру в Linux, но не в Windows. то это, возможно, работал на Windows:

SELECT ... FROM User ... 

но на Linux вам нужно использовать правильный регистр для имени таблицы:

SELECT ... FROM USER ... 

, но без дополнительной информации, это действительно трудно сказать.

+0

Я собирался добавить, имейте в виду, что таблицы действительно хранятся в виде файлов и доступны как таковые. Дело имеет значение. MyTable! = Mytable во всех случаях (простите за каламбур). +1. –

1

Есть некоторые настройки, которые имеют разные значения по умолчанию под Windows и Linux, чувствительность к регистру имен таблиц и т. Д. Являются одним из них. Может быть, что не заданная настройка по умолчанию для одного значения для Windows, а другая - для Linux.

0

Вы в порядке, и для моего случая я узнал, почему я не смог войти в систему, пропустив имя пользователя! Проблема в том, что когда я восстанавливаю схему из файла резервной копии, все таблицы создаются с именами нижних регистров, например, таблица USER будет пользователем, затем .. Когда я загружаю tomcat, JPA автоматически создает все @Entity, поэтому он создает таблицы User для пользователя @Entity, в результате у меня есть две таблицы для USER, таблица пользователя, в которой есть все данные, и пустая таблица пользователей, и это та, которая используется приложение! Вот почему я не смог получить какие-либо данные, потому что на самом деле нет данных для извлечения из таблицы.

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

Я действительно не знаю, есть ли лучшее решение, но для меня это сработало.

И, наконец, большое вам спасибо за помощь.

Смежные вопросы