2011-03-01 40 views
1

方案:MySql和Oracle中的數據庫。兩者具有相同的表格和相同的列。在其中一個表中,我有一個Column,'FullName'。在MySql和Oracle中存儲Unicode字符

甲骨文數據類型使用是VARCHAR2(64)。 使用的MySql數據類型是VarChar(64)。

爲支持Unicode字符UTF 8被用作默認字符集。

我得到Oracle中的錯誤,它說「值列過大」,在MySQL中的正常工作。

我想知道,什麼是這兩個dbases之間的區別?

說明:對於UTF日文字符8編碼需要3個字節。

在此先感謝。

+2

在Oracle,是聲明爲'VARCHAR2(64 BYTE)'或'VARCHAR2(64 CHAR)'列? – 2011-03-01 07:53:18

+1

CREATE TABLE 「DUMMYUSER」 ( \t \t \t \t 「FULL_NAME」 VARCHAR2(64), \t \t \t \t 。。。); – 2011-03-01 09:30:38

+0

感謝Jeffery Kemp提出這個問題。給了我一個全新的視角來看待問題...找到了解決辦法。 – 2011-03-01 12:12:51

回答

2

它在MySQL工作的原因是因爲VARCHAR(64)在MYSQL指,64個字符和缺省字符是UTF8。

對於Oracle它不工作,雖然默認字符集爲Oracle是UTF8。原因是VarChar2(64),表示64字節。對於日語UTF 8編碼的字符需要3個字節用於單個字符。因此錯誤「值列太大」。

感謝David Sykes在以下鏈接中提供的解決方案。

Difference between BYTE and CHAR in column datatypes