2013-02-05 6 views
5

空白だけで2つの文字列を入力すると、どのように私は、 "自動トリム" をオフにすることができます重複したエントリ 'PRIMARY' 'キーのための'MYSQLが自動トリムを無効にする

ERROR 1062:私は、このエラーメッセージが表示されますか?

私はこれを使用していますとこのデータ型:Varcharです。

+1

自動トリミングの問題はありますか? –

+0

はい、そのプライマリキーと私はそれが自動トリミングの問題であるかどうかはわかりません..しかし、私はどのように追加することができます異なるLenghtの2つの空の文字列 –

+0

私の最初の質問は、それは必要ですか?また、必要な場合は、列がプライマリキーである必要がありますか? – Vijay

答えて

6

SQL 92文書によると、2つの文字列を比較すると、最短の文字列をスペースで埋めて長さを同じにします。

8.2 <comparison predicate>を文書内で検索します。

If the length in characters of X is not equal to the length 
in characters of Y, then the shorter string is effectively 
replaced, for the purposes of comparison, with a copy of 
itself that has been extended to the length of the longer 
string by concatenation on the right of one or more pad char- 
acters, where the pad character is chosen based on CS. If 
CS has the NO PAD attribute, then the pad character is an 
implementation-dependent character different from any char- 
acter in the character set of X and Y that collates less 
than any string under CS. Otherwise, the pad character is a 
<space>. 

つまり、言い換えれば、それはあなたが入力したスペースの量で値を格納するのではなく、重複した主キーをチェックするための比較です。したがって、スペースの異なる2つの文字列を主キーとして使用することはできません

+0

ありがとうございます。 Can not NO PADの設定方法を教えてください。 –

+0

残念ながら、MYSQLでは変更できません。マニュアルhttp://dev.mysql.com/doc/refman/5.5/en/char.htmlには、「すべてのMySQL照合はPADSPACE型です。これは、MySQLのすべてのCHAR値とVARCHAR値が後続のスペースに関係なく比較されることを意味します。 –

関連する問題