2014-12-12 36 views
0

AUTO_INCREMENT 열을 포함하는 복합 키를 사용하여 master-master MySQL MIXED 복제에서 테이블을 만들려고 할 때 마스터에 테이블을 생성하지만 실패했습니다 노예에 그렇게하는 것.MySQL 혼합 복제가 복합 키에 auto_increment를 사용하여 테이블을 생성하지 못했습니다.

여기에 우리가 슬레이브 측에있어 오류는 다음과 같습니다

 
Error 'Incorrect table definition; there can be only one auto column and it must be defined as a key' on query. Default database: 'total_chamilo'. Query: 'CREATE TABLE `c_attendance_result` (
       c_id INT NOT NULL, 
      id int NOT NULL auto_increment, 
      user_id int NOT NULL, 
      attendance_id int NOT NULL, 
      score int NOT NULL DEFAULT 0, 
      PRIMARY KEY (c_id, id) 
     ) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci' 

데이터베이스의 MyISAM입니다.

MySQL 버전은 우리가 테이블 같은 서버에서 작업을 동일한 스키마와 일치를 가지고 있지만, 다른 복제 모드 (문) 및/또는에 이전 MySQL을 만들어 5.5.40-0가 + 놀랍게도

을 wheezy1 로그입니다 번역.

는 사람이 ... 그 문 이런 종류의 전체 대형 덤프의 일부이기 때문에 원래 쿼리를 변경하지 않고,

덕분에,

A.이 가능한 경우를이 문제를 해결하는 방법을 알고 있나요

답변

0

이 슬레이브가 제대로 구성되어 있지 않고 MyISAM 대신 InnoDB를 사용하려고하는 것처럼 보입니다. AUTO_INCREMENT 컬럼을 가지는 InnoDB 테이블은 자동 증분 컬럼이 유일한 컬럼 또는 가장 왼쪽 컬럼 인 적어도 하나의 키를 필요로한다. MySQL 5.5 reference manual을 참조하십시오. 귀하의 경우에는 자동 증분 열이 두 번째 열입니다.

+0

마스터 슬레이브 동기화가 양쪽 모두 default_storage_engine 값으로 설정된 상태에서 데이터베이스가 생성되었습니다. – aligot

+0

default_storage_engine을 무시하는 설정이 많이 있습니다. 나는 지금은 너무 늦었다 고 생각하지만 일반적으로 SHOW CREATE TABLE table_name을 사용하여 어떤 스토리지 엔진이 실제로 슬레이브의 테이블에 사용되는지 확인합니다. –