【问题标题】:How to drop unique in MySQL?如何在 MySQL 中删除唯一性?
【发布时间】:2010-12-06 14:25:20
【问题描述】:
Create Table: CREATE TABLE `fuinfo` (
  `fid` int(10) unsigned NOT NULL,
  `name` varchar(40) NOT NULL,
  `email` varchar(128) NOT NULL,
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `fid` (`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

我想删除email上的唯一键,如何?

【问题讨论】:

    标签: mysql indexing sql-drop


    【解决方案1】:

    只需使用以下 SQL 脚本即可删除 MySQL 中的索引:

    alter table fuinfo drop index email;
    

    【讨论】:

    • 请注意,如果存在 email 列的外键(错误 150),您可能无法删除这样的键。为了让它工作,首先删除外键,然后删除索引,然后重新创建外键。例如 ALTER TABLE fuinfo DROP 外键 fk_name_for_email;
    【解决方案2】:

    有一个更好的方法,不需要你改变表格:

    mysql> DROP INDEX email ON fuinfo;
    

    其中 email 是唯一键(索引)的名称。

    你也可以这样带回来:

    mysql> CREATE UNIQUE INDEX email ON fuinfo(email);
    

    IDEX 之后的 email 是索引的名称,它不是可选的。您可以使用 KEY 代替 INDEX。

    也可以像这样创建(删除)多列独特的indecies:

    mysql> CREATE UNIQUE INDEX email_fid ON fuinfo(email, fid);
    mysql> DROP INDEX email_fid ON fuinfo;
    

    如果你没有指定多列索引的名称,你可以这样删除它:

    mysql> DROP INDEX email ON fuinfo;
    

    其中 email 是列名。

    【讨论】:

    • 无论如何,所有这些实际上都会做一个 ALTER TABLE,所以你并不是真的在避免这种情况。这只是同一事物的不同语法。
    【解决方案3】:

    mysql> DROP INDEX email ON fuinfo;

    其中 email 是唯一键(而不是列名)。您可以通过

    找到唯一键的名称
    mysql> SHOW CREATE TABLE fuinfo;
    

    在这里您可以看到唯一键的名称,例如,它可能是 email_2。所以...

    mysql> DROP INDEX email_2 ON fuinfo;
    
    mysql> DESCRIBE fuinfo;
    

    这应该表明索引已被删除

    【讨论】:

      【解决方案4】:

      DROP INDEX column_name ON table_name

      选择数据库并从 sql 选项卡查询。这将删除特定列的索引。它在 PHP MyADMIN 中对我有用

      【讨论】:

        【解决方案5】:

        这可能对其他人有所帮助

        alter table fuinfo drop index fuinfo_email_unique
        

        【讨论】:

          【解决方案6】:

          使用下面的查询:

          ALTER TABLE `table_name` DROP INDEX key_name;
          

          如果你不知道key_name,那么先试试下面的查询,你可以得到key_name。

          SHOW CREATE TABLE table_name
          

          SHOW INDEX FROM table_name;
          

          如果您想从 mysql 表中删除/删除主键,请使用以下查询

          ALTER TABLE `products` DROP INDEX `PRIMARY`;
          

          代码取自:http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

          【讨论】:

            【解决方案7】:

            ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
            

            【讨论】:

              【解决方案8】:

              尝试删除列的唯一性:

              ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx
              

              在 phpmyadmin 中运行此代码并删除列的唯一性

              【讨论】:

                【解决方案9】:

                对于 MySQL 5.7.11

                Step-1:首先获取唯一密钥

                使用这个查询来获取它:

                1.1) 显示创建表用户;

                最后会是这样的:

                .....

                .....

                唯一键UK_8bv559q1gobqoulqpitq0gvr6 (phoneNum)

                .....

                ....

                第 2 步:通过此查询删除唯一键。

                ALTER TABLE 用户删除索引 UK_8bv559q1gobqoulqpitq0gvr6;

                第 3 步:通过此查询检查表信息:

                DESC 用户;

                这应该表明索引已被删除

                就是这样。

                【讨论】:

                  【解决方案10】:
                   ALTER TABLE [table name] DROP KEY [key name];
                  

                  这会起作用。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-02-28
                    • 2021-08-03
                    • 2014-02-13
                    • 2015-05-07
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-22
                    相关资源
                    最近更新 更多