2014-05-12 7 views
2

나는 아주 오랫동안 mysql을 사용 해왔다. 그러나 덤프 안에있는 지시문 중 하나를 조사하지는 않았다. 나는 현재 파티션 작업, 그래서 예제를 보자와의이 http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html의 코드를 살펴 보자 해요 : 내가 관심이mysqldump 주석 지시어 사용하기

show create table t2\G 
*************************** 1. row *************************** 
     Table: t2 
Create Table: CREATE TABLE `t2` (
    `dt` datetime DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
/*!50500 PARTITION BY RANGE (to_seconds(dt)) 
(PARTITION p01 VALUES LESS THAN (63426787200) ENGINE = MyISAM, 
PARTITION p02 VALUES LESS THAN (63426816000) ENGINE = MyISAM, 
PARTITION p03 VALUES LESS THAN (63426844800) ENGINE = MyISAM, 
PARTITION p04 VALUES LESS THAN (63426873600) ENGINE = MyISAM, 
PARTITION p05 VALUES LESS THAN (63426902400) ENGINE = MyISAM, 
PARTITION p06 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ 

것은이 /*!50500 [...] */입니다. 그것은 무엇이며 어떻게 작동합니까? 나는 덤프 파일을 파싱 할 때 mysql에 대한 지시자라고 생각한다. 지시어에 관해서는, 나는 그것이 켜지거나 꺼질 수 있다고 생각한다. 그게 멋질거야 - 내가 테이블을 분할하여 데이터베이스 덤프를 가질 수 - 50500 지시문을 해제하는 동안 - 나는 파티션을하지 않고 덤프를로드 할 수 (그것은 무시 될거야, 그럴 것 같아). 가능한가, 그것을하는 방법?

답변

4

이것은 mysqldump 기능이나 지시문 코드 또는 이름이 아닙니다. 그것은 MySQL conditional comments 오래된 좋은 :

당신이 문자 다음에 버전 번호를 추가하는 경우, 주석 내에서 구문 이 MySQL 버전이 지정된 버전 번호보다 크거나 같은 경우에만 실행됩니다 "!". 다음 주석에 임시 키워드 는 MySQL의 3.23.02 이상에서만 서버에서 실행됩니다

CREATE /*!32302 TEMPORARY */ TABLE t (a INT); 

방금 ​​설명한 주석 구문은 mysqld 서버 가 SQL 문을 구문 분석하는 방법에 적용됩니다. mysql 클라이언트 프로그램은 또한 서술문을 서버에 보내기 전에 구문 분석을 수행합니다 ( ). (그것은 여러 개의 문 입력 라인 내에서 문 경계를 확인하려면이 을 수행합니다.)이 형식

댓글,/*! 12345 ... * /의 서버에 저장되지 않습니다. 이 형식을 사용하여 저장된 루틴을 주석 처리하면 주석이 서버에 보관되지 않습니다.

따라서 50500MySQL은 5.5.0 또는 더 큰 의미합니다. 이전 서버에서 덤프를 복원 할 수 있는지 확인하는 방법입니다.

+0

정확한 답변을 보내 주셔서 감사합니다. – ducin