오류 찾기

[오류] 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         |공개여부테스트 |&lt;p&gt;발송여부테스트&lt;/p&gt; |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 |
|---------|-------------------------|------------|-----------------|-------------------------|-------------------|-----------|----------------|-------|-------|------------|-----------|