键“P​​RIMARY”的重复条目。忽略字符串的空格

Posted

技术标签:

【中文标题】键“P​​RIMARY”的重复条目。忽略字符串的空格【英文标题】:Duplicate entry for key 'PRIMARY' .Ignoring the spaces for strings 【发布时间】:2014-06-05 15:14:36 【问题描述】:
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'

STRINGs 'viok' 和 'viok' 不同。如何添加带空格的字符串?

【问题讨论】:

make text column as unique key的可能重复 我知道!!!你不懂问题 问题是你不应该使用 text 作为唯一/主键。 ***.com/a/18222436/3503205这是答案。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

答:不可能。

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

如果 TEXT 列被索引,则索引条目比较在末尾用空格填充。这意味着,如果索引需要唯一值,则仅在尾随空格数不同的值将发生重复键错误。例如,如果表包含“a”,则尝试存储“a”会导致重复键错误。这不适用于 BLOB 列。

【讨论】:

以上是关于键“P​​RIMARY”的重复条目。忽略字符串的空格的主要内容,如果未能解决你的问题,请参考以下文章

键“P​​RIMARY”的重复条目“制造商名称-0”

MySQL - 忽略插入错误:重复条目

在 Doctrine2/Symfony2 中的重复条目上插入忽略

[23000][1062] 键 'PRIMARY' 的重复条目 '0'

MySQL PHPMyAdmin 错误 #1062 - 键 'PRIMARY' 的重复条目 '0'

#1062 - 键 'PRIMARY' 的重复条目 '19'