mysql varchar vs oracle varchar2


1.錯誤提示:

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

錯誤原因:

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

        2. 可能是因為數據庫里的表設置的字符集不相同。

解決辦法:

  varchar(10) ——>varchar(20)

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

 

其他參考:

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

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類型,可以保證更好的兼容性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM