You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot程序执行时无法创建数据库表且收到废弃配置警告

Spring Boot无法创建数据库表及Hibernate废弃配置警告解决办法

先处理Hibernate废弃配置警告

1. 替换共享缓存模式配置项

警告HHH90000021是因为使用了废弃的javax.persistence.sharedCache.mode配置,需替换为Jakarta EE规范的新配置项:

  • 在application.properties中,将:
    spring.jpa.properties.javax.persistence.sharedCache.mode=XXX
    
    修改为:
    spring.jpa.properties.jakarta.persistence.sharedCache.mode=XXX
    
  • 若使用application.yml,对应修改为:
    spring:
      jpa:
        properties:
          jakarta:
            persistence:
              sharedCache:
                mode: XXX
    
    (XXX为原配置值,如ALL/NONE/ENABLE_SELECTIVE等)

2. 替换MySQL方言配置

警告HHH90000026提示MySQL57Dialect已废弃,需更换为通用MySQLDialect:

  • 在配置文件中修改方言设置:
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
    
    (Spring Boot 3+版本可省略该配置,框架会自动检测数据库版本适配方言)

解决无法创建数据库表问题

1. 检查JPA自动建表开关

确保spring.jpa.hibernate.ddl-auto配置正确:

  • 开发环境可设为create(每次启动重建表)或update(仅更新表结构);
  • 生产环境建议设为validate(仅校验表结构)或none(关闭自动建表);
  • 错误示例:若设为none或validate,新实体类不会自动创建表。

2. 验证数据库连接有效性

  • 确认spring.datasource.url、spring.datasource.username、spring.datasource.password配置正确,能正常连接目标数据库;
  • MySQL 8+需指定驱动类为com.mysql.cj.jdbc.Driver,且URL需添加时区参数(如?serverTimezone=UTC);
  • 注意:Spring Boot不会自动创建数据库,需提前手动创建目标数据库。

3. 检查实体类配置

  • 实体类必须添加@Entity注解;
  • 主键字段需添加@Id注解,自增主键需配合@GeneratedValue(strategy = GenerationType.IDENTITY)(MySQL适用);
  • 字段类型需与MySQL数据类型兼容(如Java的String对应MySQL的VARCHAR,Long对应BIGINT等)。

4. 确认数据库用户权限

确保连接数据库的用户拥有创建表的权限,可通过MySQL命令授权:

GRANT CREATE ON your_database_name.* TO 'your_username'@'%';
FLUSH PRIVILEGES;

5. 开启Hibernate日志排查细节

添加日志配置查看具体建表SQL及错误:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

启动应用后,查看控制台输出的SQL语句,排查是否存在语法错误或字段不兼容问题。


内容的提问来源于stack exchange,提问作者vipin chaurasiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:20:15