17.4.1.25 복제 및 예약어
이전 마스터에서 새로운 슬레이브에 복제하려고 할 때, 그리고 슬레이브에서 실행되는 새로운 MySQL 버전에서 예약어 인 식별자를 마스터에서 사용할 때 문제가 발생할 수 있습니다. 예를 들어, 4.1 이상 슬레이브에 복제하는 4.0 마스터에서 이름이 current_user
테이블 컬럼을 사용하는 경우입니다. CURRENT_USER
는 MySQL 4.1 이상에서 예약어이기 때문입니다. 이러한 경우 복제가 오류 1064 You have an error in your SQL syntax ... 실패 할 수 있습니다 (예약어를 사용하여 이름이 붙여진 데이터베이스 또는 테이블 또는 예약어를 사용하여 이름이 붙은 컬럼을 가진 테이블이 복제에서 제외되어 있어도). 이것은 각 SQL 이벤트가 실행되기 전에 슬레이브에 의해 분석 될 필요가 있기 때문에, 슬레이브는 어떤 데이터베이스 오브젝트가 영향을 받는지 알 수있다는 사실에 더합니다. 슬레이브는 이벤트가 분석 된 후에 만 --replicate-do-db
, --replicate-do-table
, --replicate-ignore-db
및 --replicate-ignore-table
에 정의 된 필터링 규칙 을 적용 할 수 있습니다.
슬레이브는 예약어로 간주 마스터의 데이터베이스, 테이블 또는 컬럼 이름의 문제를 해결하려면 다음 중 하나를 수행하십시오.
마스터에서 하나 이상의
ALTER TABLE
문을 사용하여 이러한 이름이 슬레이브에서 예약어로 간주되는 데이터베이스 개체의 이름을 변경하거나 이전 이름을 사용하는 SQL 문을 변경하고 대신 새 이름을 사용하십시오.이러한 데이터베이스 객체 이름을 사용하는 SQL 문에서 그 이름을 역음 (
`
)로 둘러싸인 식별자로 써주세요.
MySQL 버전 다른 예약어 목록은 "MySQL Server Version Reference」의 「 Reserved Words "를 참조하십시오. 식별자를 둘러싸 규칙 내용은 섹션 9.2 "스키마 객체 이름" 을 참조하십시오.