合并错误,错误代码 4103时怎么办?

本文介绍执行合并报 4103 错误的原因和解决方法。


问题现象

在以下建表语句的表上执行合并错误,错误信息如下:

CREATE TABLE t1(c1 varchar(20), c2 nchar(10), PRIMARY KEY(c1,c2)); 
INSERT t1 VALUES('test', 'test2'); 
ALTER SYSTEM major freeze;
[YD0316458724D-0005A63C1B1984E0] [lt=4] data table and index table column checksum is not equal(ret=-4103, data_table_id=1100611139453963, index_table_id=1100611139454202, column_id=16, data_table_column_checksum=0, index_table_column_checksum=1811074662)

可能原因

表中的 nchar 或 varchar 列的字符集为 utf16,并作为主键(包括联合主键),可能会引起错误。


说明OceanBase 数据库默认使用 utf8 处理 nchar 或 varchar 类型。utf16字符集无法处理nchar和varchar类型的字符串。

影响版本

OceanBase 数据库 V2.2.30-BP10 以前的版本


解决方式

  1. 避免使用 nchar 类型作为主键。
  2. 将 OceanBase 数据库升级到 V2.2.30-BP10 以后的版本。有关升级 OceanBase 数据库的方法,请参见《OceanBase 数据库升级指南》。