반응형

2024.05.19 - [개발일기/mariaDB] - [mariaDB_오류해결_01] TransientDataAccessResourceException

지난 번에 TransientDataAccessResourceException을 해결해서 관리자 회원가입이 될 줄 알았지만 또 다른 오류가 떴다.

바로 BadSqlGrammarException이다.

오류를 살펴보니 콘솔에 아래와 같은 문장이 적혀있었다.

WARN : org.mariadb.jdbc.message.server.ErrorPacket - Error: 1054-42S22: Unknown column 'a_m_postion' in 'field list'
org.springframework.jdbc.BadSqlGrammarException:
PreparedStatementCallback;
bad SQL grammar [INSERT INTO tbl_admin_member(a_m_approval, a_m_id, a_m_pw, a_m_name, a_m_gender, a_m_part, a_m_postion, a_m_mail, a_m_phone, a_m_req_date, a_m_mod_date)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())];
nested exception is java.sql.SQLSyntaxErrorException: (conn=21) Unknown column 'a_m_postion' in 'field list'

BadSqlGrammarException을 번역하면 '나쁜 sql 문법 예외'이다. 추측해보니 천천히 읽어보니 컬럼명 오타가 아닐까 생각했고 역시나였다.

오류 문장에서 Unknown column 'a_m_postion'이라고 되어있었다. 실제 테이블 컬럼명을 살펴보니 'a_m_position'으로 되어있었다. 내 오타 실수였다.

더 확인해보면 SQLSyntaxErrorException라고 나온다. 번역하면 'sql 구문 오류 예외'이다. 즉, 구문이 맞지 않아서였고 컬럼 오타도 이 예외에 포함된다.

수정한 후 다시 확인 버튼을 눌렀는데도 또 BadSqlGrammarException가 나왔다.

WARN : org.mariadb.jdbc.message.server.ErrorPacket - Error: 1054-42S22: Unknown column 'a_m_req_date' in 'field list'
org.springframework.jdbc.BadSqlGrammarException:
PreparedStatementCallback;
bad SQL grammar [INSERT INTO tbl_admin_member(a_m_approval, a_m_id, a_m_pw, a_m_name, a_m_gender, a_m_part, a_m_position, a_m_mail, a_m_phone, a_m_req_date, a_m_mod_date)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())];
nested exception is java.sql.SQLSyntaxErrorException: (conn=24) Unknown column 'a_m_req_date' in 'field list'

이번에도 컬럼명 오류였다. Unknown column 'a_m_req_date'라고 되어있었다. 그런데 테이블 칼럼명은 'a_m_reg_date'로 되어 있었다. 의미 상으로 '요청일'이기에 req_date를 사용해야 했고 db 내에서 ALTER 쿼리문을 사용해 칼럼명을 바꿔 주었다.

ALTER TABLE tbl_admin_member
CHANGE a_m_reg_date a_m_req_date DATETIME;

HeidiSQL에서 이렇게 쿼리문을 실행했더니 컬럼명이 바꼈으며 다시 Run server를 통해 관리자 회원가입을 실행해봤다.

아래와 같은 화면이 나왔으며 오류 없이 성공했다.

관리자 회원가입 성공 화면!

계속 개발하면서 느끼는 거지만 오류는 생각보다 큰 부분에서 일어나지 않고 아주 작은 부분에서 발생한다. 우리네 삶도 그런 것 같다.

반응형

+ Recent posts