DataBase/MariaDB

    728x90
DataBase/MariaDB

[MariaDB] lock wait timeout exceeded try restarting transaction 원인 및 해결방법

나의 경우에 auto-commit 을 해제해놓고 여러 script 및 테이블에서 데이터 작업중이었다.DBeaver 을 사용중이었는데, DBeaver 을 껐다가 키면 해당 에러 없이 다시 작동하였다. 일주일 내내 해당 오류와 씨름하고 서칭했다.wait 시간을 늘리는 등의 작업은 나에게 DB 설정 수정권한이 없었고, 확인해보니 이미 기간이 8천인가 8만? 환산해보니 24시간으로 되어있어 해당 시간을 늘리는 작업은 DB 관리자분께 요청하지 않았다.  원인내 케이스에는 Manual Commit 으로 설정해놓고 여러 스크립트에서 동시에 작업해서 그런 것 같다. 해결방법커밋을 전부 Auto Commit 으로 변경하고 작업하니 해당 에러가 발생하지 않았다. 한 테스트 문서에서 힌트를 얻었었는데, 급한 업무여서 빠르게..

DataBase/MariaDB

[MariaDB] SQL 그룹으로 묶어서 값 출력하기 (GROUP_CONCAT)

아래와 같은 경우에, STUDENT_ID 로 묶어서 SUBJECT 값들을 출력하고 싶으면 어떻게 해야할까?STUDENT_ID | NAME | SUBJECT -----------+------+--------     1      | 김철수 | 국어     1      | 김철수 | 수학      1      | 김철수 | 영어     2      | 이영희 | 국어     2      | 이영희 | 과학     3      | 박민수 | 수학     3      | 박민수 | 체육  GROUP_CONCATGROUP_CONCAT 함수를 사용하면 그룹 내 데이터를 하나의 문자열로 결합하여 출력할 수 있다. 아래와 같이 GROUP_CONCAT 을 사용하면 된다. SELECT STUDENT_ID, GROUP_..

DataBase/MariaDB

[MariaDB] function 생성 시 에러 1418, This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

DB에서 함수를 선언해야하는데 아래와 같은 에러가 발생했다. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 원인함수 생성 시 DETERMINISTIC, NO SQL, READS SQL DATA 중 하나 이상의 특성을 선언해야하는데 없어서 에러가 발생한다고 한다. 또는 바이너리 로깅이 활성화된 상태에서 이러한 선언이 없는 함수를 생성하려고 하면 에러가 발생한다.  바이너리 로깅바이너리 로깅은 데이터베이스에..

DataBase/MariaDB

[Java_MariaDB] 프로시저 <OUT> 자바에서 받아오기

프로시저 내부와 mybatis의 xml 파일에서 OUT 파라미터를 불러오는 방법은 아래 포스팅을 참조하자.https://skylarcoding.tistory.com/210 MariaDB 프로시저 OUT 파라미터 사용하는 방법 , (conn=28804) Parameter at position is not set 에러 해결법프로시저를 호출할 때 콘솔로 넘겨주는 값은 IN 으로 작상한다. 그렇다면, 프로시저를 호출한 후 내부에서 생성된 값을 어떻게 외부로 넘길까?외부로 값을 넘겨주고 싶으면 OUT 파라미터를 사용skylarcoding.tistory.com  이번 포스팅은 그 이후에 배출한 OUT 프로시저를 java(Spring) 에서 어떻게 받아오는지에 대한 내용이다.Service 구현부에서 값을 담을 객체를..

DataBase/MariaDB

[MariaDB] 프로시저 OUT 파라미터 사용하는 방법 , (conn=28804) Parameter at position is not set 에러 해결법

프로시저를 호출할 때 콘솔로 넘겨주는 값은 IN 으로 작성한다. 그렇다면, 프로시저를 호출한 후 내부에서 생성된 값을 어떻게 외부로 넘길까?외부로 값을 넘겨주고 싶으면 OUT 파라미터를 사용하면 된다. CREATE DEFINER = `TEST`@`%` PROCEDURE `SP_TEST` ( IN iTEST_A VARCHAR(10) IN iTEST_B INT(11) OUT vTEST_OUT VARCHAR(20))BEGIN...END; 프로시저에서는 위와 같이 OUT 파라미터를 선언해주었다.vTEST_OUT 은 내부에서 변수처럼 사용할 수 있다. 아래와 같은 방법으로 vTEST_OUT 에 값을 저장해줄 수 있다. -- 1.SET TEST_VALUE = vTEST_OUT-- 2. SELE..

DataBase/MariaDB

[MariaDB] SQL에러 Truncated incorrect INTEGER value: ''

[2024-04-15 09:48:25] [1292] Truncated incorrect INTEGER value: ''[2024-04-15 09:48:25] [1292] Truncated incorrect INTEGER value: ''[2024-04-15 09:48:25] [1292] Truncated incorrect INTEGER value: '' 나의 경우에는 원인을 파악하기 위해 쿼리문을 SELECT 단위로 잘라서 다 테스트를 돌렸다. 원인은 INNER JOIN 이었다. LEFT JOIN 으로 변경해줬더니 일부 쿼리문에서는 개선되었다. 총 3개의 쿼리가 UNION ALL 로 연결되어있는데, 일부 쿼리에서는 위 조치로 나타나지 않았다. 내 생각에 근본적으로 데이터가 잘못 들어간 것이 아닌가싶다 ...

DataBase/MariaDB

[MariaDB] SQL 프로시저에서의 변수 사용, 변수 선언

프로시저 내에서 사용할 변수명을 선언한다. DECLARE 변수명 VARCHAR(100);SET 변수명 = (SELECT ...);DECLARE 변수명 VARCHAR(10);..START TRANSACTION;SELECT ..INTO 변수명FROM 테이블

    반응형