Spring MVC应用自动创建MySQL表时出现SQLSyntax错误求助
问题排查与修复方案
核心错误点1:字段名使用MySQL关键字
你的Product类中定义了private String desc;,而desc是MySQL的保留关键字(用于排序时的降序操作),直接作为字段名会触发SQL语法错误。
修复方式:
- 方案一:修改字段名,比如改成
description:
private String description; // 对应的getter/setter同步修改 public String getDescription() { return description; } public void setDescription(String description) { this.description = description; }
- 方案二:通过
@Column注解给字段名添加反引号转义:
@Column(name="`desc`") private String desc;
核心错误点2:Hibernate配置属性拼写错误
在XML配置的hibernateProperties里,你把hibernate.show_sql拼写成了hiberntae.show_sql(少了一个字母e),这个错误会导致Hibernate无法识别该属性,影响SQL日志输出,不利于排查问题。
修复方式:
修正拼写:
<prop key="hibernate.show_sql">true</prop>
额外优化建议
- JDBC URL已经指定了数据库
jdbc:mysql://localhost:3306/productcrud,@Table注解中的schema="productcrud"属于冗余配置,可以去掉:
@Entity @Table(name="product") public class Product { // ... }
- MySQL 5.x及以上版本建议使用新版驱动类
com.mysql.cj.jdbc.Driver,代替旧的com.mysql.jdbc.Driver:
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
按照以上步骤修改后,重新启动Tomcat,Hibernate即可正常自动创建product表。
内容的提问来源于stack exchange,提问作者Srushti
相关产品推荐
相关产品推荐

