AuthApplication.java 파일 실행 오류

순두누나·2025년 5월 7일

트러블슈팅

목록 보기
3/8

목표: 메인클래스인 AuthApplication.java을 실행시켜서 서버를 키고 싶음


오류상황

- 오류

Caused by: java.sql.SQLSyntaxErrorException: Incorrect table definition; there can be only one auto column and it must be defined as a key

문제점

- 내 SQL 테이블 정의

CREATE TABLE `USER` (
  `userId` int PRIMARY KEY,
  ...
);
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;

→ 이 조합은 말이 안된다.

AUTO_INCREMENT는 반드시 PRIMARY KEY + AUTO_INCREMENT가 같이 있어야함.


해결 방안

방법 1

  • SQL 테이블을 바꿔주기!
DROP TABLE IF EXISTS USER;

CREATE TABLE `USER` (
  `userId` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `userPassword` VARCHAR(255) NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `userNickname` VARCHAR(255),
  `birthDate` DATE,
  `gender` VARCHAR(255),
  `phoneNumber` VARCHAR(255),
  `readingTaste` VARCHAR(255),
  `profileUrl` VARCHAR(255),
  `userEmail` VARCHAR(255) NOT NULL UNIQUE
);
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;

@Column(nullable = false)
private String userPassword;

@Column(nullable = false)
private String name;

@Column(nullable = false, unique = true)
private String userEmail;

→ 근데도 안된다!! 왜지? SQL을 수정하고 내가 테이블을 build를 안했을까?

  1. 하지만 DB를 따로 build하는 과정은 필요없다. Spring boot 서버를 재시작하는건 필요할 수 있음.
  2. 테이블이 꼬인건 아닐까?라는 합리적인 의심이 생김. 현재 ddl-auto: update 를 설정해놓았기 때문에 이상한 구조로 업데이트 되었을 가능성 존재.

방법 2

: 테이블이 꼬여있거나 남아있을 경우

  • MySQL Workbench에서 DROP TABLE USER;
  • 완전히 다시 생성

걍 다 필요없고 확인해보니까 내 qnb_database이 애초에 비어있었다…그러니 당연히 오류가 나지

profile
순두의 누나입니다

0개의 댓글