본문 바로가기

mysql11

[mysql ] Ibatis procedure OUT 파라미터 받기 개발환경Egov 3.7java 1.8mysql 8.0 Mybatis가 아닌 Ibatis를 사용해서 개발해야 하는 상황이였고 Mysql Procedure 사용 OUT변수를 가져오는 것에서 오류를 참 많이 보게 되었다. 프로시저와 ibatis의 조합이라 정보도 많이 나오지 않았다.   1. Mysql 테이블 생성  2. 테스트 데이터 입력insert into new_table values(1,'test1','test11'),(2,'test2','test22'),(3,'test3','test33'),(4,'test4','test44'); 3. Procedure생성CREATE DEFINER=`user`@`%` PROCEDURE `new_procedure`( IN input2 VARCHAR(100), .. 2024. 4. 26.
[MYSQL] Update Trigger 사용 Trigger (트리거) 트리거(Trigger)는 사전적 의미로 '방아쇠'라는 뜻이다. MySQL에서 트리거는 테이블에서 어떤 이벤트가 발생했을 때 자동으로 실행되는 것을 말한다. 즉, 어떤 테이블에서 특정한 이벤트(update, insert, delete)가 발생했을 때, 실행시키고자 하는 추가 쿼리 작업들을 자동으로 수행할 수 있게끔 트리거를 미리 설정해 두는 것이다. 예를 들어 고객이 물건을 구매해 구매 테이블에 정보가 insert되면, 등록된 트리거가 발동해 물품 테이블을 자동으로 update 쿼리문을 실행하게 하고, 또 등록된 트리거가 발동해 배송테이블에 insert 쿼리문을 실행시키게 끔 할 수 있다. 진행중인 프로젝트에 10개의 테이블에 하루에 각각 적게는 몇백, 많게는 몇만건의 데이터가 I.. 2023. 12. 4.
[MYSQL] LOAD DATA INFILE 대량 데이터 INSERT LOAD DATA INFILE 이란? - 파일을 읽어 테이블로 데이터를 입력하는 명령어이다. 한번에 많은 데이터를 입력해야 할 때 주로 사용된다. 다량의 데이터를 테이블에 insert하기위해 방법을 검색하던 중 INSERT문 보다 20배정도 빠르다는 LOAD DATA INFILE 이라는 것을 발견하였다. 특정 파일을 지정하고 옵션을 추가해줘서 insert문을 실행할 수 있다. LOAD DATA INFILE '/home/test/soondev/test.txt' REPLACE INTO TABLE test_table FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' (a, b, c, d, e, f, g, h, i); 두 번째 줄에 REPACE 옵션과 IGNORE 옵션을 .. 2023. 12. 4.
[Mysql] MySQL manager or server PID file could not be found! 오류 소스 반영 후 톰캣을 재실행 하였는데 페이지가 뜨지않아 catalina.out확인 해보니 와 같은 DB connection timed out 오류가 발생하고 있었고 내부망인 DB 서버에 ssh 접속하여 상태를 보니 정상동작중 이였다. toad로도 접속이되고 명령어 까지 잘동작했지만 우선 mysql 재기동을 하기위해 systemctl restart mysql 위 명령어를 쳤더니 ERROR! MySQL manager or server PID file could not be found! Starting MySQL...... ERROR! Manager of pid-file quit without updating file. 에러 발생 구글링 및 GPT 검색결과 PID파일과, sock 파일이 생성되지 않아서 발생한.. 2023. 8. 3.
[mysql] 대소문자 구분 설정하기 mysql 대소문자 구분하기 로컬에서 리눅스db 연결하고 테스트 도중 에러발생 에러나는 sql을 돌려보니 대소문자를 구분하여 발생함. 대소문자 구분상태 확인 show variables like 'lower_case_table_names'; 위 명령어를 이용하여 확인한다 Value값이 0이면 구분, 1이면 구분하지 않는 상태 /etc/mysql/my.cnf 경로에서 설정 을한다. #대소문자 구분o lower_case_table_names=0 #대소문자 구분x lower_case_table_names=1 대소문자 구분을 안하기위해 0>1로 변경 한다. - [mysqld]가 없다면 추가하고 입력하면 된다. 변경 후 systemctl restart mariadb #maria 재기동 service mysql re.. 2023. 2. 23.
[mysql] 통계쿼리, WITH ROLLUP 사용하기 통계 쿼리 작성 후 각각 수를 더하는 걸 간단하게 WITH ROLLUP을 사용해서 완성하였다 SELECT IFNULL(depart_nm,'모든합계') as depart_nm, IFNULL(org_nm, '전체') as org_nm, SUM(X.JOIN_COUNT1) AS stepB, SUM(X.JOIN_COUNT2) AS stepC, SUM(X.JOIN_COUNT3) AS stepD, SUM(X.JOIN_COUNT4) AS stepE, SUM(X.JOIN_COUNT5) AS stepF, SUM(X.JOIN_COUNT6) AS stepG, SUM(X.JOIN_COUNT7) AS stepH, SUM(X.JOIN_COUNT8) AS stepI, SUM(X.JOIN_COUNT9) AS stepJ, SUM(X.J.. 2022. 10. 6.
[mysql] update join 다중 데이터 넣기 update 서브쿼리로 많은 데이터를 넣을떄 사용 하는 방법 update tn_user a join ( select A.user_idx, B.org_idx from tn_user A inner join tn_orginfo B on A.user_team = B.org_nm and B.org_depth = 2 ) b on a.user_idx = b.user_idx set a.org_idx = b.org_idx; update구절에도 조인이 된다. 2022. 9. 30.
컬럼 중 replace 사용 하여 부분 변경하기 홈페이지 리뉴얼 하면서 파일 폴더 경로가 변경되니 이미지가 깨지는 현상이 발생하였다. img url이 도메인/a/b/파일이름 이런식으로 되어있는데 변경하면서 파일 경로를 c/d로 변경하였다 변경전 test.com/a/b/testfile update test_table set text = replace(text,'/a/b', '/c/d'); 변경 후 test.com/c/d/testfile 2022. 8. 30.
MYSQL ROW_NUMBER() 사용법 (중복데이터 순번) 쿼리 조회 후 중복데이터들의 순번을 매기기 위해 여러가지 시도를 해본 결과 SELECT addr, ROW_NUMBER() OVER(PARTITION BY addr ORDER BY height DESC, userName ASC) "지역 별 키큰 순위", userName, height FROM userTBL; 를 사용하여 결과를 얻을수 있었다 @rownum:=@rownum+1 이런 방법으로도 시도하였지만 중간에 몇몇 데이터가 원하는 값이 나오지 않았다 (아마 그룹이 같아도 시퀀스가 뒤에있어서 그랬던것 같다) 2022. 7. 14.