본문 바로가기
데이터베이스

[MariaDB] 데이터베이스 한국어 사용 가능

by sum_mit45 2023. 10. 4.
728x90
반응형

Axios Error: Requset failed with status code 500

500 에러가 나는 다양한 이유가 있겠지만, 나는 '데이터베이스에 한국어'를 넣으려고 해서 그런 것임을 알았다. 

axios error 500 이유: 데이터베이스에 한글을 넣으려고 시도해서...

해결방법 (1) - 테이블 생성 이후에, 테이블과 컬럼 수정하기

나는 이미 테이블을 만들어서, 테이블과 그 안의 컬럼을 수정하는 방법을 찾아봤다.

-- 테이블의 Collation을 변경
ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 컬럼의 Collation을 변경
ALTER TABLE my_table MODIFY korean_column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

해결방법 (2) - 테이블 설정 시, 컬럼에 설정해주기

애초에 테이블을 만들 때, 컬럼에 설정을 해 줄 수도 있다.

CREATE TABLE my_table (
    id INT PRIMARY KEY,
    name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);

해결방법 (3) - 스프링부트에서 데이터베이스 생성 시 한국어 고려하기

@Column(nullable = false, columnDefinition = "TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
private String text;

@Column 어노테이션 설정 시에 columnDefinition = "TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" 을 설정해주는 방법도 있다. 나중에는 이렇게 수정해주었다. 

더보기

사용 예시 코드

import lombok.*;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;

@Entity
@Table(name="letter")
public class LetterEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="letter_id")
    private Long Id;

    @Column(nullable = false, columnDefinition = "TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
    private String title;

    @Column(nullable = false)
    private LocalDateTime date;

    @Column(nullable = false, columnDefinition = "TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
    private String text;

    @Column
    private String weather;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "liId", referencedColumnName = "liId")
    private LetterImageEntity letterImage;

    @OneToMany(mappedBy = "letterId")
    private List<MessageEntity> messageEntityList;

    public void updateImg(LetterImageEntity letterImg){
        this.lLetterImg = letterImg;
    }
}
728x90
반응형