【问题标题】:MySQL: making a column unique?MySQL:使列独一无二?
【发布时间】:2011-09-27 21:24:18
【问题描述】:

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

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

【问题讨论】:

  • 运行它并查看。如果值是唯一的,它将正确应用。否则,MySQL 将报告无法应用约束,因为存在一个或多个值的重复项,您必须在 MySQL 再次尝试成功应用约束之前处理这些问题。
  • 如果由于存在非唯一值而导致此命令失败,您可以尝试 ALTER IGNORE TABLE [...] - 这样无论如何都会创建索引,但当然是那些记录违反唯一性约束将被丢弃;所以要小心处理。

标签: mysql phpmyadmin unique-constraint


【解决方案1】:

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

转到表结构。点击下面的唯一关键字 -

在确认框中点击确定 -

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

ALTER TABLE user ADD UNIQUE(email);

【讨论】:

    【解决方案2】:
    1. 您没有重复项 -> 将应用密钥而不会出现问题
    2. 您确实有重复 -> 将给出错误消息,您的数据没有发生任何事情
    3. 所有都是唯一的,除了其中有 NULL 的几行之外,仍然应用唯一约束,因为在检查唯一值时不检查 NULL(您可以让整个表在唯一字段中具有 NULL 值而不会出现任何错误消息)。

    还有一点,如果你有一个 prod 数据库,你也必须有一个可以毫无畏惧地测试的开发数据库,​​对吧?

    【讨论】:

      【解决方案3】:

      如果这些列中已经有一些重复值,那么这将产生错误。如果这些列中没有任何重复值,那么你会没事的。

      【讨论】:

        【解决方案4】:

        只有表上预先存在的值不唯一才会有问题,否则我认为不会有问题。

        【讨论】:

          【解决方案5】:

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

          1. 我点击了需要更新的表格

          2. 我导出了表格,将其更改为 CSV 导出,然后进行了编辑 它手动更新非唯一值。

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

          希望将来可以节省一些时间。

          【讨论】:

          • 这确实帮助了我。谢谢!
          猜你喜欢
          • 2015-12-22
          • 2011-02-05
          • 1970-01-01
          • 2013-12-24
          • 2013-06-04
          • 1970-01-01
          • 2014-04-18
          • 2014-10-19
          相关资源
          最近更新 更多