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

Spring Boot优惠券应用报coupon_seq表不存在问题求助

问题:Spring Boot优惠券应用POST请求报错找不到coupon_seq表

我正在开发一款优惠券管理的简易Spring Boot应用,实现优惠券的创建与查询功能。应用启动无异常,但通过Postman发送POST请求时,系统抛出如下错误:

java.sql.SQLSyntaxErrorException: Table 'demo.coupon_seq' doesn't exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.3.0.jar:8.3.0]

错误提示demo.coupon_seq表不存在,但我创建的是coupon表,不清楚为何系统会查找coupon_seq表,恳请帮忙排查并提供解决方案。


实体类代码

@Entity
@Table(name = "coupon")
public class Coupon {

    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    private int id;
    private String couponname;
    private int discount;
    @Column(name = "expdata")
    private String expdate;

}

控制器类代码

@RestController
@RequestMapping("/coupon")
public class CouponController {

    @Autowired
    CouponRepository repository;

    @PostMapping(value = "/createCoupon")
    public Coupon addCoupon(Coupon coupon) {
        return repository.save(coupon);
    }
}

application.properties配置

spring.application.name=springcloud

spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=Passw0rd123

spring.jpa.show-sql=true

手动执行的SQL语句

create database demo;
use demo;

create table coupon 
(
    id int auto_increment,
    couponname varchar(20),
    discount int,
    expdata varchar(10),
    primary key(id)
);

drop table coupon;

select * from coupon;

Postman请求情况

Postman请求截图


解决方案

问题原因

你使用了@GeneratedValue(strategy = GenerationType.AUTO),在MySQL环境下,JPA默认会选择TABLE主键生成策略,而非MySQL原生的AUTO_INCREMENT。该策略需要一张专门的序列表(默认命名为{表名}_seq)维护主键自增序列,因此系统会查找coupon_seq表,但你未创建这张表,导致报错。

解决办法

有两种可行方案:

方案一:改用MySQL原生自增策略

修改实体类的主键生成策略为GenerationType.IDENTITY,让JPA直接使用MySQL的AUTO_INCREMENT特性,无需额外序列表:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

方案二:创建JPA所需的序列表

若坚持使用GenerationType.AUTO,可手动创建coupon_seq表,执行以下SQL:

CREATE TABLE coupon_seq (
    next_val BIGINT
);
INSERT INTO coupon_seq VALUES (1);

额外注意

检查手动执行的SQL语句,其中包含drop table coupon;,需确保当前数据库中确实存在coupon表,避免因表不存在引发其他异常。

内容的提问来源于stack exchange,提问作者Sai Satwik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:07:26