0

将 Oracle 数据库字符集更改为 UTF-8 (AL32UTF8) 后,某些表中的几条记录被拒绝(在运行导入时)

将字符集更改为 UTF-8,然后重新加载相同的数据转储以确保可以支持阿拉伯语言字符。

导入日志抛出的错误如下图所示:

ORA-12899: 列 "DATABASE"."TABLE"."ATTRIBUTE" 的值太大(实际值:73,最大值:64)

4

1 回答 1

0

本的评论很可能是正确的。如果您最初有一个 60 个字符的字符串,它在单字节编码中需要 60 个字节的空间,并且适合 VARCHAR2(64)。

使用多字节编码 UTF-8,相同的字符串现在使用 73 个字节,并且不适合 VARCHAR2(64),因为 VARCHAR2 声明的默认单位是字节,而不是字符。

您将需要从以下位置更改所有字符列:

VARCHAR2(64)

至:

VARCHAR2(64 CHAR)

我强烈建议不要以字节为单位使用任何长度声明,因为要进行验证,几乎不可能预测字符串是否适合。例如,很容易定义一个将条目限制为 40 个字符的 HTML 文本字段,因为它具有用于此目的的属性。但是很难创建相同的条目以将条目限制为以 UTF-8 编码测量的 40 个字节。无论如何,您希望如何将其传达给用户?(以 UTF-8 编码衡量时,您输入的名称不得超过 40 个字节。

于 2012-08-17T11:38:22.917 回答