密钥' PRIMARY'重复输入。为字符串输入空格

时间:2014-04-21 14:25:43

标签: mysql

mysql> CREATE TABLE primary2(boom text,id int,PRIMARY KEY(boom(5)) );
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO primary2 VALUES('viok',1);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO primary2 VALUES('viok',1);
ERROR 1062 (23000): Duplicate entry 'viok' for key 'PRIMARY'
mysql> INSERT INTO primary2 VALUES('viok ',1);
ERROR 1062 (23000): Duplicate entry 'viok ' for key 'PRIMARY'

STRING' viok'和' viok'是不同的。如何添加一个带空格的字符串?

2 个答案:

答案 0 :(得分:2)

问:如何添加带空格的字符串?

答:这是不可能的。

TEXT值' viok'和' viok'就MySQL如何将那些存储为索引条目而言,是唯一的。这是documented behavior

  

如果索引TEXT列,则索引条目比较在末尾填充空格。这意味着,如果索引需要唯一值,则对于仅在尾随空格数方面不同的值,将出现重复键错误。例如,如果表格中包含' a',则尝试存储' a'导致重复键错误。对于BLOB列,情况并非如此。

答案 1 :(得分:0)

MySQL在字符串比较中忽略尾随空格。一种方法是添加一列以存储文本的尾随空格数。

一种方法是将其存储为varchar,该字符允许尾随空格。