页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

(本文档仅供参考)

...

问题说明

       1、知识库A使用gbk编码创建的数据库。

...

       3、通过smartbi1管理端把知识库A进行备份,然后在知识库B对应的smartbi2进行知识库还原。有时候会发生插入数据错误,sql中要更新的某个字段的长度超过了数据库表中字段的定义长度。

解决方案

       原因分析:  原因分析:

       1、数据库以字节为单位存储。  1、数据库以字节为单位存储。

         2、以知识库t2、以知识库t_group中某个字段A为例,如果g_group 设置的是varchar 255。

       3、知识库A   3、知识库A gbk 编码情况下,可以存储255/2 大约127个汉字。

       4、知识库B   4、知识库B utf-8编码情况下,可以存储255/3 大约85个汉字。

         这样如果 这样如果 知识库中某些字段超过了85个汉字,在插入到utf-8 编码的数据库中就会遇到上面出现的问题。

        如何判断字节存储是否一样?

       目前在项目是在db2  目前在项目是在db2_9上遇到的,发现低版本的mysql(4.0以下),也会有这个以字节为单位存储,然后才会触发此问题,其他数据库未测试,如果遇到同样的问题,可以通过如下方式对应的【字节】存储的是否一样:

         1) 1) 对知识库A创建一个测试表,表中包含一个vachar类型的字段,设置为vachar(10),创建后,输入中文,看能输入几个中文字:

         2)对知识库B同样创建一个测试表,表中包含一个vachar类型的字段,设置为vachar2)对知识库B同样创建一个测试表,表中包含一个vachar类型的字段,设置为vachar(10),创建后,输入中文,看能输入几个中文字:

       检查两个数据库插入的中文个数是否一样,如果一样(如下图),说明两个数据库字节存储是一样的,如果不一样,说明字节存储是不一样的。  3)检查两个数据库插入的中文个数是否一样,如果一样(如下图),说明两个数据库字节存储是一样的,如果不一样,说明字节存储是不一样的。

          

      

       解决方案:

       保证两个知识库的数据库存储字节一样,因为这类数据库自身的字节存储问题,是没有办法从产品层面解决的。

...