mysql 14

mysql | Packets larger than max_allowed_packet are not allowed

1. 이슈 : max_allowed_packet 값 초과 1) 실서버 db 데이터를 테스트 서버 db 로 import 했는데, 테스트 서버에서 일부 데이터만 표시됨 (jsp,xml 등 소스파일은 실서버와 테스트 서버 동일) 2) 제대로 표시되지 않는 db table만 따로 import 시도 3) sql 파일 import 시 Packets larger than max_allowed_packet are not allowed 에러 메세지 뜨면서 import 안됨 2. 문제 해결방법 : 테스트서버 mysql의 max_allowed_packet 값 변경 1) 실서버와 테스트 서버의 max_allowed_packet 값 확인 - mysql workbench 에서 아래의 명령문 실행 show variables whe..

개발 2021.07.02

MySQL | Query execution was interrupted

1. 오류 : java.sql.SQLException:Query execution was interrupted 2. 오류원인 : mysql 인덱스가 꺼져있어서 쿼리하나의 실행시간이 20~30초가 걸렸고 그래서 timeout으로 해당 오류가 발생했다. (오류 찾아낸 방법) MySQL워크밴치에서 쿼리 입력 후 해당 아이콘을 클릭해서 쿼리를 실행하면 쿼리 실행내역을 자세히볼 수 있다. 쿼리 실행 단계를 살펴봤을때 하나의 조건에서 119975줄을 모두 탐색했다. 정상실행하는 경우 인덱스로 80줄만 탐색한다. 3. 해결방법 : 3-1. 테이블 인덱스 상태 확인 SHOW INDEX FROM (테이블명); 여기서 Comment 에 disabled 되어있으면 인덱스가 꺼져있는 상태이다. 3-2. 인덱스 사용으로 변경 ..

개발 2021.05.20

mysql | Query execution was interrupted

1. 오류 : java.sql.SQLException:Query execution was interrupted 2. 오류 원인 : left outer join 으로 테이블을 여러개 조인했고 join 과정에서 데이터가 너무 많거나 조건절에 맞지 않는 데이터가 있어서 발생 3. 해결방법 : 쿼리중에서 어느 부분때문에 해당 오류가 발생하는지 파악하기 위해서 1) where 조건절을 하나씩 지우고 테스트 2) join 테이블을 하나씩 지우고 테스트 3) 서브쿼리를 하나씩 지우고 테스트 => 오류가 발생했을때는 TABLE A 의 데이터를 모두 가져와서 JOIN했다면 TABLE A의 데이터는 최근 30일것만 가져오도록 WHERE 절을 추가해서 오류를 수정했다.

개발 2021.04.05

MySQL | Error Parsing DDL | There was an error while parsing the DDL retrieved from the server

1. 오류메세지 : There was an error while parsing the DDL retrieved from the server. Do you want to view the DDL or cancel processing it? 테이블 정보 보려고 하면 오류메세지 팝업뜨고 오류발생한 쿼리 나타남 2. 오류원인 : TABLE COMMENT에 특수 문자 '[ ]'를 입력한 게 원인이었다. TABLE은 정상적으로 만들어졌지만 TABLE을 조회시 COMMENT내용의 특수문자때문에 오류가 발생했다. 3. 해결방법 : 생성된 테이블의 COMMENT 변경 (TABLE 코멘트 변경) ALTER TABLE 스키마.`TEST_TABLE` COMMENT='특수문자 없는 내용';

개발 2021.02.02

mysql | table status 조회, auto_increment

1. table status 조회 쿼리 show table status from test_2020 where name = 'table_name' // test_2020 = db명, schema // table_name = table명 해당 쿼리를 실행했을때 나오는 항목중 Auto_increment 가 row추가시 부여되는 번호이다. 참고사이트 www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21660&cat1=13&cat2=383&cat3=417&lang=k :::MySQL Korea::: 13.5.4.21. SHOW TABLE STATUS SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] SHOW TABLE STA..

개발 2020.11.05

MySQL | 주민등록번호 조회 쿼리

주민등록번호 조회 쿼리 (암호화된 번호, 암호화되어있지 않은 번호가 섞여있을때) - DB TABLE (테이블명 : LIST) - 조회쿼리1 1 2 3 4 5 6 SELECT CAST(NO AS CHAR) as no , NAME as name , R_NO as registration_number FROM LIST WHERE length(R_NO) = '14' Colored by Color Scripter cs 주민등록번호의 길이가 14이므로('-'포함) 길이로 조건을 걸어서 가져온다 - 조회쿼리2 AND RES_NO LIKE '%-2%' 조건을 추가하면 주민등록번호 뒷자리가 2로 시작하는사람을 조회할 수 있다. 마찬가지로 AND RES_NO LIKE '%-1%' 조건을 추가하면 주민등록번호 뒷자리가 1로 ..

개발 2020.08.25

mysql (ibatis) | 오류 | jdbc.exceptions.MySQLIntegrityConstraintViolationException

1. 오류 : jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column '(컬럼명)' in where clause is ambiguous 2. 오류 원인 : join문에서 동일한 이름의 컬럼이 2개이상 있어서 발생 (예시 : 오류 코드) 1 2 3 4 5 6 SELECT C.NO , C.B_DATE AS cb_date , C.E_DATE , B.B_DATE AS bb_date FROM CTABLE C LEFT JOIN BTABLE B ON C.NO = B.NO ORDER BY B_DATE ASC, E_DATE ASC cs CTABLE에도 B_DATE 컬럼이 있고 BTABLE에도 B_DATE가 있는데 ORDER BY에서 B_DATE가 어느 테이..

개발 2020.06.30