从MySQL迁移至MS SQL Server时触发运行时异常
解决Spring Boot迁移至MS SQL Server时因关键字'user'导致的DDL语法错误
问题概述
将原本基于MySQL的Spring Boot应用迁移至MS SQL Server后,启动时出现DDL执行失败的报错,核心原因是**'user'是MS SQL Server的保留关键字**,而Hibernate生成的建表语句直接使用user作为表名,触发SQL语法错误。
解决方案
方案1:修改实体类表名,避开关键字
找到项目中对应的User实体类,修改@Table注解的表名为非关键字(比如users):
@Entity @Table(name = "users") public class User { // 原实体字段及逻辑保持不变 }
修改后Hibernate会生成名为users的表,彻底避开关键字冲突,这也是更规范的做法。注意后续需要同步调整Power BI数据源中对应的表名。
方案2:配置Hibernate自动转义关键字
如果不想修改实体类,可以在MS SQL Server的application.properties中添加以下配置,让Hibernate自动对所有标识符(表名、字段名)进行转义:
# 新增:让Hibernate自动转义关键字 spring.jpa.properties.hibernate.globally_quoted_identifiers=true
开启后,Hibernate生成的DDL会将user表名转为[user](MS SQL Server的关键字转义格式),从而通过语法校验。
验证修改
完成上述任一方案后,重新启动应用,Hibernate可以正常执行DDL语句,应用即可正常启动,后续Power BI也能正常连接MS SQL Server进行实时数据可视化。
内容的提问来源于stack exchange,提问作者Jaiylon
相关产品推荐
相关产品推荐

