기존 테이블의 생성쿼리(create) 문 가져오기
show create table [TABLE]; 실행하면 create 문의 sql 확인가능
- 전산쟁이 꾸러미
- · 2011. 11. 24.
두 개의 테이블 간에 필드 값 일괄 업데이트 하기 문제테이블 Table_A 와 Table_B 가 있다.Table_A 의 pk가 3이상인 행에서 필드 field_a 는 Table_B의 field_b 값으로 업데이트되어야 한다. 해결join 으로 해결 UPDATE Table_A as A left outer join Table_B as B ON A.pk = B.pk SET A.field_a = B.field_b WHERE A.pk >= 3 참고복잡한 구조인 경우 조인을 이용한 셀렉트문으로 각 필드가 정상적으로 조회 되는지 확인을 우선하고 시행한다. SELECT A.field_a, B.field_b FROM Table_A as A left outer join Table_B as B ON A.pk = B.pk W..
Class.forName("com.mysql.jdbc.Driver");관련 500 오류는 mysql에서 제공하는 다라이버가 없어서 나타나는 문제임.mysql-connector-java-X.X.XX-bin.jar 파일을 톰켓 lib 안에 추가, 재시작하면 해결.해당 파일은 http://dev.mysql.com/downloads/connector/j/ 에서 mysql jdbc 다운받아서 설치.설치된 경로 안에 있음.
Mysql 에서 HTML 태그 삭제 함수(strip_tags) delimiter || DROP FUNCTION IF EXISTS strip_tags|| CREATE FUNCTION strip_tags( x longtext) RETURNS longtext LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA BEGIN DECLARE sstart INT UNSIGNED; DECLARE ends INT UNSIGNED; IF x IS NOT NULL THEN SET sstart = LOCATE('', x, sstart); SET x = CONCAT(SUBSTRING( x, 1 ,sstart -1) ,SUBSTRING(x, ends +1 )) ; SET sstart = LOCATE(..
오라클 등의 디비에서는 row_number()를 이용하여 행마다의 순번을 지정할 수 있으나mysql 에서는 해당 함수가 없다.대신 아래와 같은 방법을 이용할 수 있다. set @num:=0; select @num:=@num+1 as rownum, field1, field2 from {TABLE} [where]; num 이라는 변수를 생성 0으로 초기화 하여 행별값을 증가 시킨다.해당 변수는 DB 연결상태에서 계속 유지 되므로 다른 쿼리에서 사용시 초기화 해줘야 한다. select 쿼리문의 where 절에서도 초기화가 가능하다. select @num:=@num+1 as rownum, field1, field2 from {TABLE} where (@num:=0)=0 [where]; @http://stacko..
mysqldump --opt --default-char=utf8 -u user -p DB > backup.sqlmysqldump 시 Can't open file: './DB/table.frm' (errno: 24) when using LOCK TABLE라는 메시지가 나오면--lock-all-table 옵션추가 mysqldump --opt --default-char=utf8 --lock-all-table -u user -p DB > backup.sql
select table_schema as "DB_name", SUM(data_length+index_length)/1024/1024 as "Size(MB)" from information_schema.TABLES where table_schema = '[DBNAME]' GROUP BY table_schema
show create table [TABLE]; 실행하면 create 문의 sql 확인가능
alter database [DB] default character set euckr collate utf8; alter table [TABLE] default character set euckr collate utf8;
디비오류로그 (tail -n200 /usr/local/mysql/data/localhost.err) 보면 깨진 디비의 테이블확인 가능 "Table '[TABLE_NAME]' is marked as crashed and should be repaired" /usr/local/mysql/bin/mysqlcheck -Aao --auto-repair -u root -p mysqld restart 시 localhost.err 에 110423 19:14:25 [ERROR] Column count of mysql.db is wrong. Expected 22, found 15. The table is probably corrupted 110423 19:14:25 [ERROR] mysql.user has no `Even..
------------------------------------------------------------------ DBDesigner4와 Mysql5 연동 ------------------------------------------------------------------ DBDesigner4는 오래전에 개발되고 더이상 업그레이드가 없는 제품이라 업그레이드된 MySql의 DLL을 반영하지 않아서 생기는 현상이었다. 1. 2개의 DLL 파일을 교체하고 2. MySQL관련 커넥션을 만들때 디폴트로 읽어오는 설정값을 바꾼다. 1. 2개의 DLL 파일 교체 - dbxopenmysql5_dll.zip -> password 관련 에러 발생 : 다운로드 경로( http://www.justsoftwaresolu..
기본적으로 원격 접속은 mysql 디비의 user,db 테이블의 host 필드에 의해 정해 진다 host 값이 '%' 이면 모든 접속 허용 'xxx.xxx.xxx.xxx' 이면 해당 아이피만 접속 허용 계정 생성시 아래와 같이 해도 된다. mysql> CREATE USER '[유저아이디]'@'[아이피]' IDENTIFIED BY '[유저비번]'; mysql> GRANT [권한] ON [디비명].* TO '[유저아이디]'@'[아이피]'; *[권한] : All 혹은 all privileges 일 경우 모든 권한, 그외 SELECT, INSERT 식으로 넣어준다. *[아이피] : 모든 아이피일 경우 % 로 설정 특정 아이피는 해당 아이피 기입 mysql> flush privileges; @http://www...
$vi back.sh #!/bin/sh time=`date '+%Y%m%d%H%M'` etc="etc" cd / backup_path ="/backup_path/" cd $backup_path mysqldump -u[userid] -p[userpwd] [dbname] > "$time.sql" --default-character-set=latin1 --set-charset find /backup_path/* -mtime +5 -exec rm -f {} '; $chmod 700 back.sh $crontab -e 00 05 * * * /path/backup.sh (새벽 5시 정각) * --default-character-set=latin1 --set-charset 캐릭터셋 지정