๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐Ÿ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๐Ÿ 

[Spring] (MAC, IntelliJ, vue.js) org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "CHARACTER VARYING(255)"; ์˜ค๋ฅ˜๋Š” ์™œ ๋œจ๋Š”๊ฑธ๊นŒ?

by ._.sori 2025. 7. 26.

 

 

์–ด์ฐŒ์ €์ฐŒ ํ”„๋ก ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ 
๋ฐฑ์—”๋“œ๋ฅผ ํ•˜๋ ค๋Š”๋ฐ,
์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค!
์™œ ๋ฐœ์ƒํ• ๊ฑธ๊นŒ?

 

 

 

 

1. ์˜ค๋ฅ˜ ์‚ดํ”ผ๊ธฐ.

 

์ด๋Ÿฐ! ๋ชป์ƒ๊ธด ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค.

Caused by: org.h2.jdbc.JdbcSQLFeatureNotSupportedException:
Feature not supported: "CHARACTER VARYING(255)"; SQL statement:

 

ํ˜„์žฌ H2๋กœ database๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ h2์—์„œ ์„œํฌํŠธํ•˜์ง€ ์•Š๋Š” ํŠน์ • ํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ ํŠน์ • ํƒ€์ž…์€ "CHARACTER VARYING(255)"๋ผ๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ์ง๊ณผ ์—ฐ๊ฒฐ๋œ ํŒŒํŠธ๋ฅผ ์‚ดํŽด๋ด์•ผ๊ฒ ๋‹ค.

 

 

 


 

 

 

2. ์ฝ”๋“œ ์‚ดํ”ผ๊ธฐ.

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด๋‹ค. ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉด RegisterRequest๋Š” ํ”„๋ก ํŠธ๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์—ฐ๊ฒฐํ•˜๋Š” ํด๋ž˜์Šค๋‹ค. DB์™€๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์ธ๋‹ค. ๋‹ค์Œ ํŒŒ์ผ์€ register ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ‘์— ์žˆ๋Š” Member ํด๋ž˜์Šค๋‹ค.

@Entity
@Getter
@Setter
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String name;
    private String userId;
    private String pwd;
    private String tel;
    private String birth;
    private String email;

}

 

 

์—ฌ๊ธฐ๋ฅผ ๋ณด๋‹ˆ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ด์ œ์•ผ ๋ณด์ธ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” id ํ•„๋“œ๋ฅผ ๋„ฃ๋Š”๋ฐ, ๋ณดํ†ต ๊ทธ ์ด์œ ๊ฐ€ ๊ธฐ๋ณธํ‚ค์˜ ์—ญํ• ์„ ์œ„ํ•จ์ด๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์ด๋ฆ„, ์‚ฌ์šฉ์ž ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ ์ •๋ณด๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๋“ค์–ด์™€๋„ ๋‘ ์ •๋ณด๊ฐ€ ๋‹ค๋ฅธ ์ •๋ณด์ž„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด id ํ•„๋“œ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ id๋Š” ๋ฌด์กฐ๊ฑด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค.

 

์—ฌ๊ธฐ ์ฝ”๋“œ์—์„œ @Id๋Š” JPA์—์„œ ์ด ํ•„๋“œ๊ฐ€ ์—”ํ‹ฐํ‹ฐ์˜ ๊ธฐ๋ณธํ‚ค๋ผ๊ณ  ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  @GeneratedValue๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์€ DB์—๊ฒŒ ์•Œ์•„์„œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ณธํ‚ค๋ฅผ ์ง€์ •ํ•œ ํ›„ ์ž๋™ ์ฆ๊ฐ€๋ฅผ ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ด ์ฝ”๋“œ๋Š”  Id ํ•„๋“œ๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •ํ–ˆ๊ณ , @GeneratedValue๋กœ id์˜ ๊ฐ’์ด ์•Œ์•„์„œ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ•œ๊ฒƒ์ด๋‹ค.

 

์ด์ œ ๋ฌธ์ œ๊ฐ€ ๋ณด์ผ ๊ฒƒ์ด๋‹ค. Long Id ํ•„๋“œ๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์•˜๋‹ค.

 

 

 


 

 

 

3. ํ•ด๊ฒฐํ•˜๊ธฐ.

 

@GeneratedValue์—์„œ ์ž๋™์ฆ๊ฐ€๋Š” String ํƒ€์ž…์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๊ฑธ์ˆ˜๋„ ์žˆ๊ณ , id๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ๋•Œ๋ฌธ์ผ์ˆ˜๋„ ์žˆ๊ณ ... ์•„๋ฌดํŠผ private Long id;๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.

@Entity
@Getter
@Setter
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    private Long id; // ์ถ”๊ฐ€ํ•˜๊ธฐ
    private String name;
    private String userId;
    private String pwd;
    private String tel;
    private String birth;
    private String email;

}