文档解释
Error number: 4112; Symbol: ER_CREATE_SELECT_WITH_GIPK_DISALLOWED_IN_SBR; SQLSTATE: HY000
Message: Generating an invisible primary key for a table created using CREATE TABLE … SELECT … is disallowed when binlog_format=STATEMENT. It cannot be guaranteed that the SELECT retrieves rows in the same order on source and replica. Therefore, it cannot be guaranteed that the value generated for the generated implicit primary key column will be the same on source and replica for all rows. Use binlog_format=ROW or MIXED to execute this statement.
:
错误说明:
MySQL错误号4112(ER_CREATE_SELECT_WITH_GIPK_DISALLOWED_IN_SBR)一般用于表示用户尝试在存储引擎SBR结构中创建一个具有具有全局主键的选择。 由于SBR存储引擎不支持全局主键,因此需要将该字段改为普通索引字段。
常见案例
ER_CREATE_SELECT_WITH_GIPK_DISALLOWED_IN_SBR错误一般出现在使用SBR存储引擎的MySQL表中,当用户创建一个包含全局主键的选择语句时,这个错误会直接报出。
解决方法:
以上MySQL错误4112的最简单的解决方法就是删除表中的全局主键字段,然后根据MySQL官方文档里提到的步骤,创建一个普通索引代替全局主键,并将其用户普通索引字段。如果只删除全局主键字段会导致数据丢失,那么最好的解决方法是在此过程中创建一个新表,将原表中的字段全部拷贝到新表中,之后将字段改成普通索引字段,最后再删除原来的表即可。