Mysql 에서는 Timestamp 데이터 타입이 존재하는데 다음과 같이 기본값을 설정하지 않으면 업데이트시나 새로 데이터가 추가될 때 현재시간으로 갱신되지 않는다. Timestamp 필드를 사용할 때 주의하자.

 

CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP

 

 

mysql에서 현재 실행되고 있는 쿼리 목룩을 확인하는 방법은 다음과 같다.

# mysqladmin -uroot -p processlist

 

이 서버는 테스트서버라서 아직 사용되지 아무 쿼리가 없어서 실행되는 내용이 없다.

 

Time 필드에 실행 시간도 나오니 혹시 데드락(deadlock)이 발생했는지 의심되는 경우 조회해 볼 수 있겠다.

 

mysql에서 다음과 같은 방법으로 디비명을 변경할 수 있다. 다음은 old_database를 new_database로 변경하는 예제이다.

 

# create database new_database;

새로운 디비를 생성한다.

 

# rename table old_database.table to new_database.table;

테이블들을 옮겨준다. 테이블이 여러개면 여러번 해주면 된다.

 

# drop database old_database;

기존 디비를 지운다. (옵션사항)

 

추가로 procedure도 옮기고 싶을 경우는 다음과 같이 mysql.proc 테이블을 업데이트 해주면 된다.

# update mysql.proc set db = 'old_database' where db = 'new_database';

 

 

아니면 다른 방법으로 스크립트를 이용하거나 mysqldump를 이용해서 export, import해도된다.

http://stackoverflow.com/questions/12190000/rename-mysql-database 참고

 

 

mysql -e "CREATE DATABASE \`new_database\`;"

for table in `mysql -B -N -e "SHOW TABLES;" old_database`

do

mysql -e "RENAME TABLE \`old_database\`.\`$table\` to \`new_database\`.\`$table\`"

done

mysql -e "DROP DATABASE \`old_database\`;"

 

 

더 편한 방법은 mysql 5.1.7 이상에서는 RENAME DATABASE 구문으로도 지원하다.

http://dev.mysql.com/doc/refman/5.1/en/rename-database.html

아래와 같은 쿼리를 통해서 확인할 수 있다. 또는 스키마 내역을 확인할 수도 있다.

 

select *

from information_schema.table_constraints

where table_schema = 'db'

and table_name = 'table'

and constraint_type='FOREIGN KEY';

 

 

 

INFORMATION_SCHEMA 이란?

 

INFORMATION_SCHEMA는 데이터베이스의 메타데이터이다. 이 테이블에서는 MySQL에서 관리하는 모든 데이터베이스의 정보가 포함되어있다. INFORMATION_SCHEMA는 많은 읽기전용 테이블을 포함하고 있다. 이 테이블들은 실제적으로는 뷰(view)이다. 그래서 이와 관련된 파일은 실제로 존재하지는 않는다. 뷰 이기 때문에 트리거(trigger) 등은 생성할 수 없다.

 

 

http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

대량 Insert시에는 LOAD DATA 를 이용하자.

http://dev.mysql.com/doc/refman/5.5/en/load-data.html

 

예제는 다음과 같다. 추가로 local 키워드를 사용하면 원격지의 로컬파일에서 바로 등록할 수도 있다.

 

LOAD DATA INFILE 'c:\myFile.txt'

INTO TABLE `tbl_myTable`

(@var1, @var2)

SET

obj_id = @var1,

obj_geo = GeomFromText(@var2);

mysql에서는 사용자, 디비, 접속ip별로 권한이 따로 관리되므로 설정 작업이 필요하다. 매번 할때마다 까먹어서 적어둔다. ㅎㅎ

   

CREATE USER `USER`@`HOST` IDENTIFIED BY PASSWORD;

GRANT ALL PRIVILEGES on `DBNAME`.* to `USER`@`HOST` identified by PASSWORD;

GRANT EXECUTE ON PROCEDURE `DBNAME` TO `USER`@`HOST`;

+ Recent posts