[MySQL] 상태가 sleep 인것 정리하기

Database
#!/bin/sh NOW=$(date +"%m-%d-%Y") FILE="/root/sleep_processes.$NOW.txt" /var/lib/mysql-5.1.40/bin/mysql -uroot --password='password' -e "select concat('KILL ',id,';') into outfile '/tmp/sleep_processes.txt' from information_schema.processlist where State = 'User sleep'" /var/lib/mysql-5.1.40/bin/mysql -uroot --password='password' -e "source /tmp/sleep_processes.txt;" if [ -s "/tmp/sleep_processes.txt" ]; then cp /tmp/sleep_processes.txt $FILE fi rm -f /tmp/sleep_processes.txt https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=81951&page=2
Read More

[MySQL] Auto_Increment 값 재정렬 하기

Database
MySQL에서 데이터를 정리하다 보면 auto_increment 값의 충돌로 데이터가 입력이 되지 않는 경우가 있습니다.이럴 경우 간단히 해결할 수 있는 방법이 있는데요. auto_increment 값을 재지정해주면 쉽게 해결됩니다. 단순히 원하는 값으로 초기화하기를 원하는 경우 ALTER TABLE `table_name` AUTO_INCREMENT=XXXXXX(설정한 인덱스번호); 기존의 ROW들을 재정렬 및 셋팅하기를 원하는 경우 ALTER TABLE `table_name` AUTO_INCREMENT=1; SET @CNT = 0; UPDATE `table_name` SET `table_name`.`auto_colmn` = @CNT:=@CNT+1; 만약에 데이터가 있다면은 작동하지 않을수 있습니다. ALTER TABLE `table_name` DROP `auto_colmn`; ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`); 참조 : https://code.i-harness.com/ko/q/8827ea
Read More

[MySQL] Auto_Increment 한계

Database
[MySQL] Auto_Increment 한계 CREATE TABLE을 할때, TYPE다음에 나오는 괄호안 숫자가 BYTE를 나타낸다고 알고 있었는데요,실제로 데이터를 넣어보니 끝도 없이 들어가네요. 왜 이럴까 문서를 찾아보던중 잘 정리된 블로그가 있어서 원인은 잘 알게 되었지요^^ 참고 : http://blackbull.tistory.com/44 위 사이트를 읽어보면, 결국 괄호안 숫자와 상관없이 MySQL INT 최대값까지 발번이 될것으로 판단되네요.그렇다고 INT 최대값인 4,294,967,295까지 테스트를 해볼수도 없고, 그래서 다시한번 구글링을 해봤습니다. http://forums.devshed.com/mysql-help-4/auto-increment-what-happens-at-max-value-334661.html 요길 보니깐 사람들이 잘 정리해주셨네요^^int(11) auto increment으로 설정을 하게 되면, 최대 4,294,967,295까지 발번이 되고 이후에는 error가 난다고 하네요. 최대값이 얼마나 큰 숫자인지 계산을 한 글도 있는데요,10년동안(3650일) 발번을 한다고 볼때, 일별 1,176,703 rows가 발생해야 최대값을 초과할 수 있습니다. 따라서,Transaction이 엄청 빈번한 OLTP환경에서는 SRL타입을 int(11)로 설정하기보다는unsigned BIGINT로 설정하시는게 좀더 나을것으로 판단됩니다. unsigned BIGINT면 최대값이 18,446,744,073,709,551,615이므로 왠만해서는 최대값을 초과하지 않을것으로 사료됩니다. 물론 그게 아니라면 스키마 설계를 다시하심이 낫지 않을까 개인적으로 생각해봅니다.^^아님, 돈이 빵빵하시면 오라클을 써보심도…
Read More

[PHP] MySQL 데이터 출력

PHP
1. mysql_fetch_row()mysql_fetch_row()는 데이터를 0으로 시작하는 숫자형 인덱스 배열로 반환합니다. $row = mysql_fetch_row($result); echo $row[0]; 2. mysql_fetch_assoc()mysql_fetch_assoc()는 데이터를 문자형 연관 배열로 반환합니다.배열의 키 이름으로는 필드의 이름을 갖습니다. $row = mysql_fetch_assoc($result); echo $row['key']; 3. mysql_fetch_array()mysql_fetch_array()는 $result_type의 값에 따라 반환될 배열의 형태가 다릅니다. $result_type의 값으로는 아래와 같은 상수가 올 수 있으며, 기본값은 MYSQL_BOTH입니다.  - MYSQL_NUM: 이 상수를 사용하면 숫자형 인덱스 배열을 반환합니다.  =  mysql_fetch_row()  - MYSQL_ASSOC: 이 상수를 사용하면 문자형 연관 배열을 반환합니다.  =  mysql_fetch_assoc()  - MYSQL_BOTH: 이 상수를 사용하면 인덱스 배열과 연관 배열을 동시에 반환합니다. ex) $row = mysql_fetch_array($result, MYSQL_BOTH) echo $row['key']; 4. mysql_result()mysql_result($query,0,0);    =>  ' 0행 0열 값 'mysql_result($query,0,1)     =>  ' 0행 1열 값 'mysql_result($query,1,1)     =>  ' 1행 1열 값 ' 5. 주의 사항mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array() 세 함수는 한 행에서 데이터를 읽습니다.또한 데이터를 읽은 후 함수 내부의 포인터를 증가시켜 다시…
Read More

[MySQL]: “Access denied for user ‘debian-sys-maint’@’localhost’”

Database
# # sudo cat /etc/mysql/debian.cnf # 파일 수정 # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = 비밀번호 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = debian-sys-maint password = 비밀번호 socket = /var/run/mysqld/mysqld.sock basedir = /usr MySQL 로그인 #mysql -u root -p <password> DB 에 비밀번호 적용 mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '비밀번호'; 재시작 #sudo /etc/init.d/mysql restart
Read More

[MySQL] mysql error 1364 Field ‘name’ doesn’t have a default values

Database
MySQL 5.6 이전에는 필드 생성시 default 값을 따로 지정을 안 해도 insert 시에 '' 처럼 자동으로 디폴트 값이 반영이 되었습니다. 5.6 이후부터는 STRICT 모드라고 해서 테이블 생성시에 default 값을 지정하지 않을 경우 insert 시에 아래와 같이 에러가 발생합니다. 정확하게 필드마다 값을 지정해주는것도 좋지만 외부프로그램을 사용할때 특별히 지정 안해줘도 되는 부분에 '' 이걸 다 셋팅해주긴 귀찮은 편입니다. mysql.cnf 파일에서 "sql_mode"부분을 찾아서 다음 부분을 제외 하고 재시작을 해주시면 됩니다. #sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # 'STRICT_TRANS_TABLES' 항목을 제외하고 mysql 재시작 sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Read More

[MySQL] 특정 ID별 최신 시간 데이터 추출

Database
DB에 사용자 ID 별로 시간 단위로 기록을 하고 있습니다.해당 항목에 대해서 목록을 뽑을때 사용한 쿼리 입니다. SELECT * FROM ( SELECT uid, id, balance, datetime FROM table ORDER BY datetime DESC ) AS subQuery GROUP BY DATE_FORMAT(datetime,'%Y-%m-%d'), id ORDER BY id DESC, datetime DESC
Read More

[MySQL] limit , offset

Database
게시판을 만들거나 혹은 전체 목록에서 페이지를 나누다 보면은 항상 사용하게 되어 있습니다. 조금은 형태를 바꾼 방식이라고 보시면 됩니다. /* 1번 query */ SELECT * FROM Orders LIMIT 10 OFFSET 15 /* 2번 query */ SELECT * FROM Orders LIMIT 15, 10 위에 쿼리에 보이듯이 1번, 2번은 동일한 결과물이 나오도록 합니다.정확하게 설명은 못하겠지만은 쿼리의 성능을 올리기 위해라고 저는 이해 하고 있습니다. 좀 더 설명을 잘하지 못해서 제가 검색한 사이트인 "http://crystalcube.co.kr/163" 의 링크를 걸어 놓겠습니다. 참조 http://www.w3schools.com/php/php_mysql_select_limit.asphttp://ralf79.tistory.com/722
Read More

[MySQL] MySQL 최대 접속수 설정하기

Database
MySQL 최대 접속수 설정하기 ERROR 1040 (08004): Too many connections 에러발생시 해결법 mysql을 재시작 하지 않고 바로 설정 방법 #mysql 을 재시작 안해도 max_connections 값이 바로 적용된다. mysql> set global max_connections=300; mysql 설정파일(my.ini 또는 my.cnf ) 방법 #mysql을 재시작 해 주어야 한다. [mysqld] max_connections = 300 MySQL 접속수 관련 상태를 확인하는 방법 mysql> show variables like '%max_connect%'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | max_connect_errors | 10000 | | max_connections | 100 | +--------------------+-------+ mysql> show status like '%CONNECT%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | Aborted_connects | 200 | | Connections | 300 | | Max_used_connections | 101 | ==> 현재 연결된 접속수 | Ssl_client_connects | 0 | | Ssl_connect_renegotiates | 0 | | Ssl_finished_connects | 0 | | Threads_connected | 101 | ==> 연결되었던 최대 접속수…
Read More