我可以使用MySQL Workbench连接AWS RDS,但是当尝试从本地spring boot启动连接时,它说表不存在。与我的本地MySQL相同的代码。 所以不确定会出什么问题。
application.properties
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).
对此错误有任何想法。感谢您的帮助!
答案 0 :(得分:1)
一种查找方法是使用spring.jpa.hibernate.ddl-auto=create
,这将根据您当前的实体类在数据库中创建一个名为student
的表。我怀疑您的student
表中是否包含大写字母?因为休眠状态将@Table(name = "MyTable")
的表名隐式映射到my_table
。假设您有@Table(name="Student")
,并且数据库中的表名为Student
。假设使用Hibernate 5,则需要通过设置spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
来覆盖Hibernate的 ImplicitNamingStrategy 。或者,您也可以提供自己的参考,以供参考:https://www.baeldung.com/hibernate-naming-strategy