当我们尝试在主-主 MySQL 混合复制上创建一个表,并使用包含 AUTO_INCRMENT 列的复合键时,它会在主服务器上创建该表,但在从服务器上无法创建该表。
这是我们在从属端遇到的错误:
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 版本上创建。
有谁知道解决此问题的方法,如果可能的话,无需更改原始查询,因为它是大型转储的一部分,充满了此类语句...
谢谢
A.
最佳答案
这看起来很像这个从站没有正确配置并尝试使用 InnoDB 而不是 MyISAM。具有 AUTO_INCREMENT 列的 InnoDB 表至少需要一个键,其中自动增量列是唯一列或最左边的列。请参阅MySQL 5.5 reference manual 。在您的情况下,自动增量列是第二列。
关于MySQL 混合复制无法复制复合键中带有 auto_increment 的创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27443940/