Я могу подключить AWS RDS с помощью MySQL Workbench, но при попытке подключения из локальной весенней загрузки он говорит, что таблица не существует. Тот же код работает с моим локальным MySQL. Так что не уверен, в чем проблема.
приложение.свойства
spring.datasource.url = jdbc:mysql://host:3306/db
spring.datasource.username = user
spring.datasource.password = password-1
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
сообщение об ошибке:
HHH000397: Using ASTQueryTranslatorFactory
SQL Error: 1146, SQLState: 42S02
Table 'db.student' doesn't exist
Resolved [org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet]
HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1m42s281ms410µs591ns).
Любая идея для этой ошибки. Благодарим вас за помощь!
Конфиг вроде в порядке. Можете ли вы также предоставить журнал? Мы хотели бы увидеть ошибку, вероятно.
Обновлено сообщение об ошибке
у вас есть студенческая таблица в вашей схеме БД
Если я правильно понимаю журнал ошибок, что-то не так с вашим кодом/схемой. Получил подключение к БД.
Да, я подключаюсь через верстак и вижу таблицу и данные. Также та же схема работает с лямбда.
один из способов узнать это - использовать spring.jpa.hibernate.ddl-auto=create, это создаст таблицу с именем student в вашей базе данных на основе вашего текущего класса сущности. Я подозреваю, что в вашей таблице student есть прописные буквы? Потому что hibernate неявно сопоставляет имя вашей таблицы, скажем, @Table(name = "MyTable"), с my_table. Допустим, у вас есть @Table(name = "Student"), и ваша таблица в базе данных называется Student. Предполагая Hibernate 5, вам необходимо переопределить Неявная стратегия именования Hibernate, установив spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl. Или вы можете указать свой собственный для справки: https://www.baeldung.com/hibernate-наименование-стратегия
Да, я заметил, что в сообщении об ошибке все строчные буквы, но в фактическом имени таблицы все заглавные буквы. Надеюсь, что это причина возникновения проблемы. Как сделать нечувствительным к регистру доступ к базе данных с помощью спящего режима? или любая альтернатива использованию этих типов случаев. Пожалуйста, порекомендуйте.
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl, добавив это в ваш файл свойств, переопределит ImplicitNamingStrategy, который Spring использует автоматическую настройку по умолчанию. Это позволяет @Table(name = "Student") отображать таблицу Student в вашей фактической базе данных.
Пожалуйста, предоставьте файл
application.properties. Не забудьте изменить/удалить конфиденциальные данные.