Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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:让一个列独一无二?_Mysql_Phpmyadmin_Unique Constraint - Fatal编程技术网

MySQL:让一个列独一无二?

MySQL:让一个列独一无二?,mysql,phpmyadmin,unique-constraint,Mysql,Phpmyadmin,Unique Constraint,我有一张正在生产的桌子。我意识到有些专栏应该是独一无二的。进入phpMyAdmin并更改这些列以使其唯一是否安全 ALTER TABLE `foo` ADD UNIQUE ( `bar` ) 只有在表中预先存在的值不是唯一的情况下才会出现问题,否则我认为不会有任何问题。如果这些列中已经存在一些重复的值,那么这将生成错误。如果这些列中没有任何重复的值,那么就可以了 您没有重复->将应用密钥而不会出现问题 您确实有重复->将给出错误消息,您的数据未发生任何变化 所有行都是唯一的,除了其中包含NU

我有一张正在生产的桌子。我意识到有些专栏应该是独一无二的。进入phpMyAdmin并更改这些列以使其唯一是否安全

ALTER TABLE  `foo` ADD UNIQUE ( `bar` )

只有在表中预先存在的值不是唯一的情况下才会出现问题,否则我认为不会有任何问题。

如果这些列中已经存在一些重复的值,那么这将生成错误。如果这些列中没有任何重复的值,那么就可以了

  • 您没有重复->将应用密钥而不会出现问题
  • 您确实有重复->将给出错误消息,您的数据未发生任何变化
  • 所有行都是唯一的,除了其中包含NULL的几行之外,仍然应用唯一约束,因为在检查唯一值时不检查NULL(您可以让整个表在唯一字段中包含NULL值,而不显示任何错误消息)

  • 还有一件事,如果您有一个prod DB,您还必须有一个dev DB,您可以放心地对其进行测试,对吗?

    按照以下步骤从phpmyadmin面板应用唯一的列值:

    转到表结构。单击唯一关键字,如下所示-

    单击确认框中的确定-

    将应用列的唯一值约束。 或者您可以运行mysql查询:


    ALTER TABLE user ADD UNIQUE(电子邮件)

    我有这个问题,我的值不是唯一的。我也找不到一个简单的方法在PHPMyAdmin中编辑这个问题。我是这样解决的:

  • 我点击了需要更新的表格

  • 我导出了表,将其更改为CSV导出,然后进行编辑 它可以手动更新非唯一值

  • 确保我仍然在我导出的表中(因为我 为了保持标题完整),我导入了新保存的CSV

  • 希望这能为将来节省一些时间。

    运行它并查看。如果这些值是唯一的,它将应用而不会出错。否则,MySQL将报告无法应用约束,因为存在一个或多个值的重复项,在您再次尝试时,MySQL将成功应用约束之前,您必须处理这些重复项。如果此命令因存在非唯一值而失败,您可以尝试ALTER IGNORE TABLE[…]-这样无论如何都会创建索引,但当然会删除违反唯一约束的记录;所以小心点,这确实帮了我的忙。谢谢