Spring Boot+MySQL启动报错:Table 'schema.users_seq'不存在
解决Spring Boot + MySQL 报错:
Table 'schema.users_seq' doesn't exist 问题原因
你使用GenerationType.AUTO作为主键生成策略时,Hibernate在MySQL环境下会默认尝试用序列(SEQUENCE)机制生成主键,但MySQL本身不支持原生序列,因此它会自动创建users_seq表来模拟序列。如果该表未被自动创建(比如未开启自动建表、数据库权限不足等),就会触发这个报错。
解决方案
方案1:改用MySQL原生自增策略(推荐)
直接将主键生成策略改为IDENTITY,该策略会适配MySQL的AUTO_INCREMENT机制,无需依赖序列表:
@Entity @Table(name = "users") // 注意:原appliesTo属性错误,JPA的@Table需用name指定表名 public class Users { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 修改此处策略 @Column(name="uid") private long id; // 其他字段、构造方法及Getter/Setter... }
方案2:配置Hibernate方言强制使用自增(若坚持用AUTO)
在application.properties或application.yml中指定MySQL对应的Hibernate方言,让Hibernate明确MySQL应使用自增而非序列:
# MySQL 8.x 版本使用该方言 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect # MySQL 5.x 版本使用该方言 # spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
同时确保开启自动建表(默认开启,若手动关闭需重新开启):
spring.jpa.hibernate.ddl-auto=update
额外修正点
你的@Table注解参数有误,JPA规范中@Table没有appliesTo属性,需改为name来指定数据库表名,否则实体无法正确映射到users表。
内容的提问来源于stack exchange,提问作者Eshwar
相关产品推荐
相关产品推荐

