mysql varchar vs oracle varchar2

1.錯誤提示:mysql

     mysql的Data truncation: Data too long for column 'path' at row 1sql

錯誤緣由:數據庫

   1.字段過長而致使出錯的,oracle

        2. 多是由於數據庫裏的表設置的字符集不相同。spa

解決辦法:ci

  varchar(10) ——>varchar(20)同步

  alter table `cms_activity_test` convert to character set gbk collate gbk_chinese_ci;(單獨修改指定表的字符集)it

 

其餘參考:io

mysql和oracle作數據同步。其中表的一個字段在mysql中設置爲varchar(6),Oracle中爲varchar2(6)
但mysql中能正常存放的數據同步到oracle中卻抱ORA-12899: value too large for column錯誤。
這是爲何呢?table

mysql中varchar(6)表明能夠存放6個漢字,6個字母,或6個數字。
oracle中varchar2(6)表明能夠中存放6個字節。即oracle中varchar2的長度表明字節數而不是字符數。
mysql中一個漢字佔三個字節,Oracle中一個漢字佔兩個字節。

雖然mysql varchar 和orache varchar2中字段設置相同的長度,但oracle中卻存放不下

SQL> insert into toracle values('北京蒙迪艾爾');
insert into toracle values('北京蒙迪艾爾')
ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 12, maximum: 6)

-- 在oracle中varchar2(6)中插入6個漢字失敗

1.varchar2把全部字符都佔兩字節處理(通常狀況下),varchar只對漢字和全角等字符佔兩字節,數字,英文字符等都是一個字節;2.VARCHAR2把空串等同於null處理,而varchar仍按照空串處理;3.VARCHAR2字符要用幾個字節存儲,要看數據庫使用的字符集,大部分狀況下建議使用varchar2類型,能夠保證更好的兼容性。
相關文章
相關標籤/搜索