zoukankan      html  css  js  c++  java
  • MySQL删除foreign key_ERROR 1025 (HY000): Error on rename of './test_20180206/cc' to './test_20180206/#sql2-9ac-e' (errno: 152)

    问题背景描述:

    首先,创建了一个主表,具有以下数据结构:

    mysql> describe aa;
    +-------+----------+------+-----+---------+----------------+
    | Field | Type     | Null | Key | Default | Extra          |
    +-------+----------+------+-----+---------+----------------+
    | ID    | int(11)  | NO   | PRI | NULL    | auto_increment |
    | SecID | int(10)  | NO   | UNI | NULL    |                |
    | name  | char(20) | NO   |     | NULL    |                |
    | sex   | char(5)  | YES  |     | femal   |                |
    +-------+----------+------+-----+---------+----------------+
    4 rows in set (0.01 sec)

    然后,创建了一个从表,通过外键,与表aa的SecID属性关联起来:

    mysql> create table bb  //创建表bb
        -> (SecID int(10) unique not null,
        -> room_num int(5) not null,
        -> extra binary default 0)
        -> engine=InnoDB;
    Query OK, 0 rows affected (0.10 sec)
    mysql> alter table bb add foreign key(SecID) references aa(SecID); //添加外键
    Query OK, 0 rows affected (0.14 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    执行对bb表的外键删除操作,出现以下error:

    mysql> alter table cc drop foreign key SecID;
    ERROR 1025 (HY000): Error on rename of './test_20180206/cc' to './test_20180206/#sql2-9ac-e' (errno: 152)

    经过分析,笔者发现是因为创建外键时,外键名与属性名一样导致的。

    因此,在创建外键时,最好加上外键的别名设置,以便于外键属性的修改或删除,命令如下:

    mysql> alter table cc add constraint SECID foreign key(SecID) references aa(SecID);
    mysql> alter table cc drop foreign key SECID;
    Query OK, 0 rows affected (0.16 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    目前没有找到外键名与属性名一致时,删除外键的彻底解决方法。

    可以通过命令CREATE TABLE SELECT的命令将表结构及其数据进行备份,此时外键属性是不会被复制的,就可以根据新表重新进行可靠的外键设置操作。

  • 相关阅读:
    数据提交
    Python网页信息抓取
    Python语法学习
    Elasticsearch5.x 升级-插件
    LeetCode 33 搜索旋转排序数组
    按之字形顺序打印二叉树
    股票的最大利润
    LeetCode 1143 最长公共子序列
    对称的二叉树
    两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/yy20141204bb/p/8421117.html
Copyright © 2011-2022 走看看