반응형
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class BookWord {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "book_word_id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "book_id")
private Book book;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "word_id")
private Word word;
private Integer order;
public BookWord(Book book, Word word, int order) {
this.book = book;
this.word = word;
this.order = order;
}
}
위와 같은 테이블을 생성하고 ddl option을 create 로 하니 아래와 같이 오류가 뜨며 테이블 생성이 정상적으로 되지 않았다.
Caused by: java,.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
이유를 찾아보니 order 가 이미 mysql에서 사용되고 있던 예약어라서 에러가 났던 것이다.
order를 다른 단어로 바꾸고 해결하였다.
mysql의 예약어 목록은 아래와 같다.
| ADD | ALL | ALTER |
| ANALYZE | AND | AS |
| ASC | ASENSITIVE | BEFORE |
| BETWEEN | BIGINT | BINARY |
| BLOB | BOTH | BY |
| CALL | CASCADE | CASE |
| CHANGE | CHAR | CHARACTER |
| CHECK | COLLATE | COLUMN |
| CONDITION | CONSTRAINT | CONTINUE |
| CONVERT | CREATE | CROSS |
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
| CURRENT_USER | CURSOR | DATABASE |
| DATABASES | DAY_HOUR | DAY_MICROSECOND |
| DAY_MINUTE | DAY_SECOND | DEC |
| DECIMAL | DECLARE | DEFAULT |
| DELAYED | DELETE | DESC |
| DESCRIBE | DETERMINISTIC | DISTINCT |
| DISTINCTROW | DIV | DOUBLE |
| DROP | DUAL | EACH |
| ELSE | ELSEIF | ENCLOSED |
| ESCAPED | EXISTS | EXIT |
| EXPLAIN | FALSE | FETCH |
| FLOAT | FLOAT4 | FLOAT8 |
| FOR | FORCE | FOREIGN |
| FROM | FULLTEXT | GRANT |
| GROUP | HAVING | HIGH_PRIORITY |
| HOUR_MICROSECOND | HOUR_MINUTE | HOUR_SECOND |
| IF | IGNORE | IN |
| INDEX | INFILE | INNER |
| INOUT | INSENSITIVE | INSERT |
| INT | INT1 | INT2 |
| INT3 | INT4 | INT8 |
| INTEGER | INTERVAL | INTO |
| IS | ITERATE | JOIN |
| KEY | KEYS | KILL |
| LEADING | LEAVE | LEFT |
| LIKE | LIMIT | LINES |
| LOAD | LOCALTIME | LOCALTIMESTAMP |
| LOCK | LONG | LONGBLOB |
| LONGTEXT | LOOP | LOW_PRIORITY |
| MATCH | MEDIUMBLOB | MEDIUMINT |
| MEDIUMTEXT | MIDDLEINT | MINUTE_MICROSECOND |
| MINUTE_SECOND | MOD | MODIFIES |
| NATURAL | NOT | NO_WRITE_TO_BINLOG |
| NULL | NUMERIC | ON |
| OPTIMIZE | OPTION | OPTIONALLY |
| OR | ORDER | OUT |
| OUTER | OUTFILE | PRECISION |
| PRIMARY | PROCEDURE | PURGE |
| READ | READS | REAL |
| REFERENCES | REGEXP | RELEASE |
| RENAME | REPEAT | REPLACE |
| REQUIRE | RESTRICT | RETURN |
| REVOKE | RIGHT | RLIKE |
| SCHEMA | SCHEMAS | SECOND_MICROSECOND |
| SELECT | SENSITIVE | SEPARATOR |
| SET | SHOW | SMALLINT |
| SONAME | SPATIAL | SPECIFIC |
| SQL | SQLEXCEPTION | SQLSTATE |
| SQLWARNING | SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS |
| SQL_SMALL_RESULT | SSL | STARTING |
| STRAIGHT_JOIN | TABLE | TERMINATED |
| THEN | TINYBLOB | TINYINT |
| TINYTEXT | TO | TRAILING |
| TRIGGER | TRUE | UNDO |
| UNION | UNIQUE | UNLOCK |
| UNSIGNED | UPDATE | USAGE |
| USE | USING | UTC_DATE |
| UTC_TIME | UTC_TIMESTAMP | VALUES |
| VARBINARY | VARCHAR | VARCHARACTER |
| VARYING | WHEN | WHERE |
| WHILE | WITH | WRITE |
| XOR | YEAR_MONTH | ZEROFILL |
출처 : 제타위키
반응형
'컴퓨터 > Spring + JPA' 카테고리의 다른 글
| Spring Boot 4.0 마이그레이션: Hibernate Naming Strategy 동작하지 않는 이슈 (0) | 2026.01.19 |
|---|---|
| [인텔리제이 DTO generator] json data 자동으로 entity class 생성하기 (0) | 2021.06.29 |
| 관계형 db vs 그래프 db에 대한 고민 (0) | 2021.03.07 |
| [Spring JPA] OneToOne N+1 문제 (원인 해결방법 포함) (0) | 2021.01.10 |
| [스프링] spring bean 과 java bean의 차이점! (0) | 2020.11.10 |