MySQL混合复制无法在复合键中使用auto_increment复制create table

时间:2014-12-12 12:43:01

标签: mysql replication auto-increment mixed

当我们尝试在主 - 主MySQL MIXED复制上创建表时,使用包含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版本为5.5.40-0 + wheezy1-log

令人惊讶的是,我们在相同的服务器上运行相同的模式,但在其他复制模式(语句)和/或以前的MySQL版本上创建。

有没有人知道解决这个问题的方法,如果可能的话,不改变原始查询,因为它是大型转储的一部分,充满了这种声明......

感谢,

一个。

1 个答案:

答案 0 :(得分:0)

看起来非常像这个奴隶没有正确配置并尝试使用InnoDB而不是MyISAM。具有AUTO_INCREMENT列的InnoDB表至少需要一个键,其中自动增量列是唯一或最左列。请参阅MySQL 5.5 reference manual。在您的情况下,自动增量列是第二列。