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

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

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

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

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

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

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

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, когда это происходит, но на самом деле происходит несоответствие имени схемы.

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

Связанный контент