MySQL(16)
-
MySQL - ERROR 2002 (HY000): Can't connect to local MySQL server through socket
멀쩡히 잘 되던 MySQL이 MySQL Workbench에서도 접속이 잘 되는데... terminal에서 mysql을 실행하니 Error가 똭~ # mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) ls /var/run/mysqld 해봤더니... 아무것도 없네??? 휑~~ ;;; /etc/init.d/mysql restart 해봤지만 Fail 이 똭~ find / -name '*.sock' 로 해당 파일을 찾아봤지만 mysqld.sock은 찾을길이 없... 이리 저리 수소문 끝에... stop / start를 하나씩 실행했더니... 정상~ # service ..
2018.06.20 -
MySQL - 시간 간격 계산
시간을 더할 때는 DATE_ADD( NOW(), INTERVAL 1 DAY ) 시간을 뺄 때는 DATE_SUB( NOW(), INTERVAL 1 DAY ) DAY 자리에는 초,분,시,일,주,달등의 분류들을 사용할 수 있다. MICROSECOND, SECOND, MINUTE, HOUR DAY, WEEK, MONTH, QUARTER, YEAR 시간의 차이을 계산할 때는 TIMEDIFF( 시간1, 시간2 ) ※ Oracle처럼 시간1 - 시간2 하면? SELECT 시간1 - 시간2 FROM DUAL; 숫자가 나오긴 한다. 시간1 : 2018-05-01 16:27:11 이고 시간2 : 2018-05-01 11:38:30 일 때 결과 : 48881 이 나온다. 이 결과의 의미는? 왜 이런 결과가? 시간을 단순 숫..
2018.05.16 -
MySQL - Temp Table is full, 크기 조절
CREATE TEMPORARY TABLE xxx ... 임시로 생성한 테이블에서 아래와 같은 Exception 이 발생한다면? java.sql.SQLException: The table 'xxx' is full MySQL 환경에 설정된 heap size와 temp table size를 조절해야한다. * MySQL 재기동시 반영 /etc/mysql 에 있는 mysql.cnf 파일을 수정한다. !includedir /etc/mysql/mysql.conf.d/ 이런 식으로 환경설정 파일을 나눠놨다면... 해당 경로에 있는 mysql.cnf 파일을 수정한다. 원하는 크기로 설정하면 된다. max_heap_table_size = 256000000 tmp_table_size = 256000000 * 실시간으로 반영..
2018.01.11 -
MySQL - rownum, rank, SQL_CALC_FOUND_ROWS
Oracle의 RANK() OVER 같은 결과를 만들어 낼 수 있는 SQL이다. 특정 Key1를 기준으로 해당 Key1내에서 Key2를 기준으로 순위를 만드는 SQL이다. (아래에서는 rnum을 기준으로, created에 따라서 순위를 만들고 있다.) SELECT * FROM ( SELECT a2.* , @rn := CASE WHEN @key1 != rnum THEN 1 ELSE @rn + 1 END AS rank , @rk := CASE WHEN @rn = 1 THEN 1 WHEN @key2 = created THEN @rk ELSE @rn END AS tmp_val , @key1 := rnum , @key2 := created FROM ( SELECT ... AS rnum , ... AS create..
2017.11.29 -
MySQL - Select한 값으로 Update
단순한게는 테이블과 테이블을 Join해서 특정 컬럼의 값으로 Update 시킬 수 있다. UPDATE TABLE1, TABLE2 SET TABLE1.COLUMN1 = TABLE2.COLUMN3 WHERE TABLE1.COLUMN2 = TABLE2.COLUMN4 ; UPDATE TABLE1 INNER JOIN TABLE2 ON TABLE1.COLUMN2 = TABLE2.COLUMN4 SET TABLE1.COLUMN1 = TABLE2.COLUMN3 ; UPDATE TABLE1 SET COLUMN1 = ( SELECT COLUMN2 FROM TABLE2 WHERE ... LIMIT 1 ) ; 복잡하게는 Matching되는 특정 값이 존재하지 않을 경우 ROW_NUM을 만들어서 Join 시킬 수 있다. UPDA..
2017.11.28 -
MySQL - 임의의 날짜값 생성
임의의 날짜를 설정해서 TEST 해야할 때 유용할 듯... 오늘에서 임의의 날짜를 빼고 시간, 분, 초를 임의의 난수로 채워서 날짜를 만들어낸다. STR_TO_DATE( CONCAT( DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL CAST(RAND() * 100 AS UNSIGNED) DAY), '%Y%m%d' ) , LPAD( CAST( CAST(RAND() * 23 AS UNSIGNED) AS CHAR ), 2, '00' ) , LPAD( CAST( CAST(RAND() * 59 AS UNSIGNED) AS CHAR ), 2, '00' ) , LPAD( CAST( CAST(RAND() * 59 AS UNSIGNED) AS CHAR ), 2, '00' ) ), '%Y%m%d..
2017.11.14