【问题描述】
1. 本地有两个mysql实例,其中一个mysql实例是3.2版本的,另一个mysql实例是3.2.4版本的。两个mysql实例都映射到同一个sequoiadb
2. 在3.2.4版本的mysql实例中创建表包含主键索引,表和索引成功映射到sequoiadb中
3. 在 3.2版本的mysql实例中创建相同的表和主键索引,创建表失败,并报错 error 40046,即同名索引已存在,怎么定位?
【解决办法】
1. 由于 mysql 的主键索引不能为 NULL,所以在 SequoiaSQL-MySQL 3.2.4 版本中主键索引的定义加上了 NotNull 属性。即在 3.2.4 版本的 mysql 实例中创建主键索引,映射至 sequoiadb 中,索引定义为:{"name": "PRIMARY", unique : true, "NotNull" : true}
2. 再在 SequoiaSQL-MySQL 3.2 版本的 mysql 实例中创建相同表相同主键索引,由于 3.2 版本不存在 NotNull 的索引属性,因此创建同名索引不同定义而失败报错 error 40046,查看数据节点日志打印错误消息:Failed to create index {"name": "PRIMARY", unique : true, "enforced" : true}
3. 建议将 SequoiaSQL-MySQL 3.2 版本升级至 3.2.4,两个 mysql 实例的版本信息保持一致,避免版本不兼容导致出现类似问题