본문 바로가기
반응형

MySQL31

[Mysql] sql_mode=only_full_group_by Mysql 을 사용중인데 아래와 같은 에러가 발생했다. this is incompatible with sql_mode=only_full_group_by 찾던 중에 mysql 공식 홈페이지에서 이와 같은 글을 발견했다. https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html MySQL :: MySQL 5.7 Reference Manual :: 12.19.3 MySQL Handling of GROUP BY 12.19.3 MySQL Handling of GROUP BY SQL-92 and earlier does not permit queries for which the select list, HAVING condition, or ORDER BY list.. 2024. 4. 18.
[Mysql] 그룹함수 사용법 (with 로 사용) 예전 포스팅에서 그룹함수에 대해서 작성한 포스팅이 있다. 그룹함수에 대해서 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅은 다른 DBMS 들과는 Mysql 에서 그룹함수 사용법이 조금 달라서 따로 작성한다. 대표적으로 Rollup 함수에 대해서만 사용법을 작성할 것이다. Oracle을 비롯한 다른 DBMS에서는 Rollup 을 아래와 같이 사용한다. Oracle Rollup 예시 SELECT ID, COUNT(ID) FROM TEST GROUP BY ROLLUP(ID); Mysql 사용법은 아래와 같다. Mysql Rollup 예시 SELECT ID, COUNT(ID) FROM TEST GROUP BY ID WITH ROLLUP; 이렇게 with 가 추가되어 쿼리를 작성해야한다. 참고 포스팅.. 2024. 4. 17.
[Mysql] [Error] 1075 // auto increment 관련 오류 mysql 사용중에 아래와 같은 에러가 발생하였다. ERROR 1075 : incorrect table definition there can be only one auto column and it must be defined as a key 특정 컬럼을 AI(auto Increment) 로 설정을 지정했는데 해당 컬럼을 PK로 지정을 안했을때 발생하는 에러이다. 2024. 4. 13.
[Mysql] Log 설정 (general, slow_query, binary ..) Mysql 에서는 서버를 운영하기 위한 로그 정책이 몇가지 있다. Error log -MySQL을 시작, 실행, 종료 시 발생한 문제를 기록 General Log - 클라이언트 연결 설정 및 실행된 쿼리를 기록 Binary Log - 테이블 생성 및 데이터 변경과 같은 변경 사항을 기록(SELECT 쿼리는 남기지 않음) Relay Log - 복제 구성 시 마스터의 변경 사항을 기록 Slow Log - long_query_time 파라미터로 설정된 시간보다 수행시간이 긴 쿼리를 기록 DDL Log - DDL문의 실행을 기록 가장 많이 사용 되는 General, Slow_Query 에 대해서 다뤄볼 것이다. general_log SHOW VARIABLES LIKE '%general%' +----------.. 2024. 4. 1.
[Mysql] (Error) You can't specify target table 'xxx' for update in FROM clause MySQL에서 delete문에서 서브쿼리를 사용할 때 You can't specify target table 'xxx' for update in FROM clause 라는 에러가 발생했다. 실제 사용하려던 쿼리는 아래와 같다. DELETE FROM TABLENAME WHERE ID IN (SELECT MIN(ID) FROM TABLENAME); 결과가 제목과 같은 에러였다. 보면 알겠지만 SELECT 이나 DELETE 에 SYNTAX 등의 에러는 보이지 않는다. 이는 MySQL의 특징으로 데이터를 추가나 갱신할 경우 동일한 테이블로 서브쿼리를 사용할 수 없도록 되어 있기 때문이다. Oracle이나 Postgresql에서는 문제 없이 실행된다. 해결 방법 서브쿼리의 FROM 구는 임시테이블로 다룰수 있으므.. 2024. 3. 31.
[Mysql] Lock wait timeout exceed 동일한 쿼리에 대해서 여러번을 수행하는데 상황에 따라 Lock wait timeout exceed 가 발생하기도 하고 잘 수행 되기도 했다. 문제의 이유는 트랜잭션 수행 시간이 길어서 발생하였다. 일반적으로 Lock timeout이 발생하는 것은 단일 트랜잭션의 수행 시간이 오래 걸리기에 발생한다. 특히 배치성 작업은 트랜잭션 수행 시간에 특히 주의해야 하고, 만일 트랜잭션 수행 시간이 길다면 트랜잭션을 분리하는것을 권고한다. 해결책은 아래와 같다. 현재 Timeout 시간 확인 SELECT @@innodb_lock_wait_timeout; 원하는 시간으로 설정 SET GLOBAL innodb_lock_wait_timeout = 20; 2024. 3. 23.
[Mysql]Error Code: 2013. Lost connection to MySQL server during query workbench 에서 mysql 쿼리 중 이와같은 에러 메세지가 발생했다. Error Code: 2013. Lost connection to MySQL server during query. 해당 에러 메세지는 쿼리 수행 중 connection 이 종료되어 발생한 에러이다. 쿼리 제한 시간을 늘려주면 해결이 된다. Workbench -> setting 에서 아래 페이지에서 빨간 부분을 필요에 맞게 수정하면 된다. 2024. 3. 22.
[Mysql] GROUP_CONCAT() error group_concat 사용시 아래와 같은 에러가 발생 하였다. #HY000Row 4611 was cut by GROUP_CONCAT() 그러면 아래와 같이 사용해서 SELECT @@group_concat_max_len; 현재 Group concat 시 사용가능한 max length 를 확인한다. 그리고 아래와 같이 변경을 해주면 된다. SET group_concat_max_len=150000; 2024. 3. 21.
[Mysql] Lock 확인 및 해제 여러 쿼리를 반복 , 여러번 수행하다 보면 dead lock 이 걸릴때가 있다. 이럴때는 직접 해결해주지 않고서는 쉽지 않게 풀린다. 찾는 방법은 간단하다. Lock 확인 SHOW PROCESSLIST; //이건 100개만 나오고 전체를 나오게 하려면 SHOW FULL PROCESSLIST; 그럼 이와같이 보인다. Kill kill하는 방법 역시 간단하다. process 의 id를 해주면 된다. KILL 255; 2024. 3. 20.
반응형