Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql-将列属性更改为唯一_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql sql-将列属性更改为唯一

Mysql sql-将列属性更改为唯一,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我的“用户”表中有一列“电子邮件”。我忘了在开始时让电子邮件独一无二。现在我的数据库中有很多条目,当我尝试将“email”更改为唯一时,会显示错误“#1062-重复条目”作为键“email” 我确实有一些用户没有电子邮件条目,这意味着“电子邮件”列中有许多空值。我现在如何使“电子邮件”独一无二 问题:unique是否意味着它不能包含任何空值?是否需要重新创建新表?创建备份表。然后通过删除重复的电子邮件和放置空记录的虚拟电子邮件来清理备份表 运行从备份表到原始表的更新sql。您不能发送“电子邮件”

我的“用户”表中有一列“电子邮件”。我忘了在开始时让电子邮件独一无二。现在我的数据库中有很多条目,当我尝试将“email”更改为唯一时,会显示错误“#1062-重复条目”作为键“email”

我确实有一些用户没有电子邮件条目,这意味着“电子邮件”列中有许多空值。我现在如何使“电子邮件”独一无二


问题:unique是否意味着它不能包含任何空值?是否需要重新创建新表?

创建备份表。然后通过删除重复的电子邮件和放置空记录的虚拟电子邮件来清理备份表


运行从备份表到原始表的
更新
sql。

您不能发送“电子邮件”如果您的表中有一封电子邮件存在不止一次,那么首先您必须删除重复的电子邮件,而不是为空值生成虚拟电子邮件

这些是活动表吗?
Did Unique意味着它不能包含任何空值
。唯一的意思是唯一的,也可以是空的,有一次需要重新思考这里的逻辑。一种方法是创建另一个名为say valid_users的表(或者将用户重命名为contacts)。然后你有一个NOTNULL唯一约束,和一些函数来创建记录并驱动所有需要从中发送电子邮件的函数。或者您在业务逻辑中执行唯一性操作,而不是在db层。电子邮件地址是空的还是空的?某些电子邮件地址是空的,这将是虚假电子邮件。同样,虚假电子邮件不能输入两次。您应该考虑将此字段作为应用程序中的必填字段输入。