MySQL 混合复制无法复制复合键中带有 auto_increment 的创建表

标签 mysql replication auto-increment mixed

当我们尝试在主-主 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/

相关文章:

replication - Kubernetes master 高可用或复制配置

MySql Master-Master 复制导致缺少自增值

python - 使用 py2neo (Neo4j) 自动递增属性?

Mysql连接多张表

mysql - MYSQL 的繁体中文和简体中文应该使用哪种字符集?

php - Android 从 php 获取 json 数据显示错误....!

sql - MySQL 查询 : Optimal Querying

database - 无法使用 Zookeeper 在 ClickHouse 中设置复制

mysql - 为什么在违反唯一键约束而不是主键约束时 MySQL 中会出现自动增量间隙?

mysql - 如何实现跨多个表的行唯一的自增id?