Mariadb是版本10.0.23 我使用下面的脚本进行测试
create table test(
username varchar(30)
,constraint UK_TEST unique (username);
insert into test values('name1');
1 row inserted.
insert into test values ('name1 ');
第二个插入错误,错误消息是
重复'UK_TEST'的重复输入'name1',
突出显示,第二个与第一个不同,值后缀中还有一个空格
有没有人可以帮我解决这个问题?
答案 0 :(得分:3)
根据the documentation,对于VARCHAR和其他几种数据类型,在比较中忽略尾随空格,包括用于唯一约束的那些:
目前,所有MariaDB排序规则都是PADSPACE类型,这意味着 VARCHAR(以及CHAR和TEXT值)在不加考虑的情况下进行比较 用于尾随空格。这不适用于LIKE模式匹配 运算符,它考虑了尾随空格。
如果唯一索引包含尾随填充字符的列 被剥离或忽略,插入到值不同的列中 只有通过尾随填充字符的数量才会产生一个 重复键错误。
答案 1 :(得分:1)
您已标记"用户名"字段为" UNIQUE"。因此,它只接受整个列中的唯一值。您正在尝试插入重复的值。
在https://dev.mysql.com/doc/refman/5.7/en/constraint-primary-key.html
了解详情答案 2 :(得分:1)
当数据库中的用户名设置为“UNIQUE”或设置为“PRIMARY KEY”时,会遇到此类问题。在您的情况下,它是唯一,因此您不能有两行共享相同的用户名,这是非常逻辑和正确的。
我建议你在继续前进之前阅读有关mysql的更多信息。
请在此处详细了解主要键约束:https://dev.mysql.com/doc/refman/5.7/en/constraint-primary-key.html