Проект Spring-mvc не может выбрать из определенной таблицы MySQL

Я создаю проект Spring-mvc (использующий JPA и Hibernate для доступа к БД), который отлично работает локально, на моем компьютере разработчика, с локальной базой данных MySQL.

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

Tomcat (после некоторой борьбы) развертывает мой war-файл без жалоб, и я могу получить ответ из приложения через браузер.

Когда я захожу на свою главную страницу, которая находится за аутентификацией Spring Security, он перенаправляет меня на страницу входа, которая отлично работает. У меня есть Security настроен на запрос базы данных для получения сведений о пользователе, и это прекрасно работает. Фактически, изменение пароля в базе данных отражается на поведении формы входа в систему, поэтому я уверен, что она достигает базы данных и запрашивает user Таблица.

После аутентификации мы переходим на первую "настоящую" страницу приложения, и я получаю ошибку "сбой доступа к данным". Журнал консоли сервера получает эту строку (отредактировано):

ERROR org.hibernate.util.JDBCExceptionReporter - SELECT command denied to user
'myDbUser'@'localhost' for table 'asset'

Однако, если я перейду к MySQL из оболочки, используя точно такие же кредиты, у меня не возникнет никаких проблем при выборе из asset Таблица:

[development@tomcat01stg]$ mysql -u myDbUser  -pmyDbPwd dbName

...

mysql> \s
--------------
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

Connection id:      199
Current database:   dbName
Current user:       myDbUser@localhost
...
UNIX socket:        /var/lib/mysql/mysql.sock
--------------

mysql> select count(*) from asset;
+----------+
| count(*) |
+----------+
|       19 | 
+----------+
1 row in set (0.00 sec)

Я сломал свои настройки доступа MySQL, очистил пользователя и повторно запустил команды предоставления, установил версию пользователя из 'localhost' и другую из '%', убедившись, что сбросил разрешения.... Ничего меняет поведение этой вещи.

Что дает?

1 ответ

Догадаться.

Оказывается, конфигурация базы данных, которую вы поместили в /src/main/resources/spring/database.properties, используется для соединения с базой данных, но схема, которую вы передаете Roo, когда она выполняет "обратный инженера базы данных", заполняется через все созданные Roo классы модели, и это используется для указания таблицы (schema.table) в запросах.

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

Самое быстрое, что нужно было сделать, это воссоздать мою базу данных на промежуточном сервере с именем, совпадающим с именем на моем компьютере разработчика. Это решило это.

Другие вопросы по тегам