오류 찾기
[오류] MySQL/MariaDB tinyint(1) 와 tinyint(4) 오류
코소미
2021. 7. 12. 19:37
MySQL/MariaDB tinyint(1) 와 tinyint(4) 오류
MySQL/MariaDB의 데이터 타입 - TINYINT(M)
TINYINT(M)는 정수형으로 총 1Byte 저장공간을 차지하는 데이터 타입으로
-128에서 127 사이의 숫자를 저장하기 위한 데이터 타입이다.
UNSIGNED 옵션을 적용하면 0에서 255까지의 숫자를 저장한다.
크기를 비교해보면 tinyint < smallint < int < bigint 이다.
TINYINT(1) 로 들어가면 Boolean으로 결과 값이 반환이 되고,
TINYINT(4) 로 들어가면 Interger으로 결과 값이 반환이 된다.
나는 위와 같은 사실을 잘 모르고
다른 페이지, 다른 테이블과 똑같은 로직과 쿼리문인데
결과 값이 숫자로 잘 반환이 되는데
왜 숫자가 아닌 true/false (Boolean형)로 반환되나 했더니..
저게 오류의 원인이였다 . . !
아래는 해당 쿼리와 결과값이다.
SELECT B.BOARD_SEQ,
B.TITLE,
B.CONTENT,
F_GET_DATETIME(B.REG_DATETIME) AS REG_DATE,
B.REG_USER_SEQ,
B.IS_DISPLAY,
(CASE WHEN B.IS_DISPLAY = 1 THEN '공개' ELSE '비공개' END ) AS IS_DISPLAY_NAME,
B.IS_NOTI,
(CASE WHEN B.IS_NOTI = 1 THEN '발송' ELSE '미발송' END ) AS IS_NOTI_NAME,
TU.USER_ID
FROM T_BOARD B
INNER JOIN T_USER TU
ON TU.USER_SEQ = B.REG_USER_SEQ
WHERE B.BOARD_SEQ = '8'
{executed in 5 msec}
[2021-07-12 18:02:52:1222687] <ADMIN-LOGID:000000022> [admin][0:0:0:0:0:0:0:1] INFO jdbc.resultsettable -
|----------|--------|---------------------------|--------------------|-------------|-----------|----------------|--------|-------------|--------|
|board_seq |title |content |reg_date |reg_user_seq |is_display |is_display_name |is_noti |is_noti_name |user_id |
|----------|--------|---------------------------|--------------------|-------------|-----------|----------------|--------|-------------|--------|
|8 |공개여부테스트 |<p>발송여부테스트</p> |2021-07-12 17:32:30 |1 |false |비공개 |false |미발송 |admin |
|----------|--------|---------------------------|--------------------|-------------|-----------|----------------|--------|-------------|--------|
SELECT TA.USER_SEQ,
TA.NAME,
TA.ADMIN_GRADE,
F_CODE_NM('ADMIN_GRADE', TA.ADMIN_GRADE) AS ADMIN_GRADE_NAME,
TA.CELL_PHONE,
TA.EMAIL,
TA.DEPARTMENT,
F_CODE_NM('DEPARTMENT', TA.DEPARTMENT) AS DEPARTMENT_NAME,
TA.REMARK,
TA.IS_USE,
(CASE WHEN TA.IS_USE = 1 THEN '사용' ELSE '미사용' END ) AS IS_USE_NAME,
TU.USER_ID
FROM T_ADMIN TA
INNER JOIN T_USER TU
ON TU.USER_SEQ = TA.USER_SEQ
AND TU.USER_TYPE = 'A'
WHERE TA.USER_SEQ = '2'
{executed in 3 msec}
[2021-07-12 18:04:23:1313726] <ADMIN-LOGID:000000026> [admin][0:0:0:0:0:0:0:1] INFO c.issue.configure.mybatis.ResultMap - @@@ ResultMap - decrypt 22 - [name:R36gZn5I1clqfv0OYai7Cg==]-->김엔드
[2021-07-12 18:04:23:1313727] <ADMIN-LOGID:000000026> [admin][0:0:0:0:0:0:0:1] INFO c.issue.configure.mybatis.ResultMap - @@@ ResultMap - decrypt 22 - [cell_phone:2VHwMEcmA2VukIGHK8EjeQ==]-->01078994566
[2021-07-12 18:04:23:1313727] <ADMIN-LOGID:000000026> [admin][0:0:0:0:0:0:0:1] INFO jdbc.resultsettable -
|---------|-------------------------|------------|-----------------|-------------------------|-------------------|-----------|----------------|-------|-------|------------|-----------|
|user_seq |name |admin_grade |admin_grade_name |cell_phone |email |department |department_name |remark |is_use |is_use_name |user_id |
|---------|-------------------------|------------|-----------------|-------------------------|-------------------|-----------|----------------|-------|-------|------------|-----------|
|2 |R36gZn5I1clqfv0OYai7Cg== |10 |일반 관리자 |2VHwMEcmA2VukIGHK8EjeQ== |test123@aend.co.kr |03 |마케팅팀 |null |0 |미사용 |admin_test |
|---------|-------------------------|------------|-----------------|-------------------------|-------------------|-----------|----------------|-------|-------|------------|-----------|