인프런 커뮤니티 질문&답변

알함님의 프로필 이미지
알함

작성한 질문수

Spring Boot JWT Tutorial

Security 설정, Data 설정

Spring boot 3.x버전에서 data.sql 오류 발생할 경우

작성

·

26

0

  1. data.sql -> import.sql로 이름 변경

  2. user 테이블 명을 users나 다른 테이블 명으로 수정해야 하며 sql 쿼리문에서의 ""는 삭제해야 합니다.

 

package com.sixplace.user;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.*;

import java.util.Set;

@Entity
@Table(name = "users")
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {

    @JsonIgnore
    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userId;

    @Column(name = "username", length = 50, unique = true)
    private String username;

    @JsonIgnore
    @Column(name = "password", length = 100)
    private String password;

    @Column(name = "nickname", length = 50)
    private String nickname;

    @JsonIgnore
    @Column(name = "activated")
    private boolean activated;

    @ManyToMany
    @JoinTable(
            name = "user_authority",
            joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")},
            inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")})
    private Set<Authority> authorities;
}

 

 

 

insert into users (username, password, nickname, activated) values ('admin', '$2a$08$lDnHPz7eUkSi6ao14Twuau08mzhWrL4kyZGGU5xfiGALO/Vxd5DOi', 'admin', 1);
insert into users (username, password, nickname, activated) values ('user', '$2a$08$UkVvwpULis18S19S5pZFn.YHPZt3oaqHZnDwqbCW9pft6uFtkXKDC', 'user', 1);

insert into authority (authority_name) values ('ROLE_USER');
insert into authority (authority_name) values ('ROLE_ADMIN');

insert into user_authority (user_id, authority_name) values (1, 'ROLE_USER');
insert into user_authority (user_id, authority_name) values (1, 'ROLE_ADMIN');
insert into user_authority (user_id, authority_name) values (2, 'ROLE_USER');

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

알함님, Spring Boot 3.x 버전에서 data.sql 관련 오류를 해결하기 위해 import.sql로 파일 이름을 변경하고, SQL 관련 문제를 해결하는 방법을 문의하셨군요. 이와 관련된 문제는 Spring Boot의 데이터베이스 초기화 설정이 변경되어 발생하는 경우가 많습니다.

  1. Spring Boot 3.x에서 data.sql 오류:

    • Spring Boot 3.x에서는 Hibernate가 관리하는 방식으로 import.sql 파일을 사용하는 것이 데이터베이스를 초기화하는 데 더 적합할 수 있습니다.
    • data.sql 대신 import.sql로 파일명을 변경하면, Hibernate가 데이터베이스 초기화 시 이를 자동으로 실행하게 됩니다.
  2. 테이블 명 및 쿼리 문제 해결:

    • user 테이블을 정의할 때 users와 같은 새로운 이름을 사용하는 것이 좋습니다. 이는 SQL 표준을 따르며, 일부 데이터베이스에서는 user가 예약어일 수 있기 때문입니다.
    • SQL 쿼리에서 사용한 따옴표(“)는 제거하여 표준 SQL 형식을 유지하는 것이 좋습니다.

관련된 내용으로 더 자세한 해결 방법은 아래 강의의 질문 게시판에서 확인하실 수 있습니다:
- 스프링부트 3.x 버전 data.sql 삽입 오류 발생할 경우 해결 방법

위 게시물은 스프링 부트 3.x와 관련된 유사한 오류 상황과 해결 방법에 대해 설명하고 있습니다. 강의와 직접적으로 관련된 질문일 경우 강의의 질문 게시판을 활용하시면 더 나은 해결 방법을 찾을 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

알함님의 프로필 이미지
알함

작성한 질문수

질문하기