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的命令将表结构及其数据进行备份,此时外键属性是不会被复制的,就可以根据新表重新进行可靠的外键设置操作。

  • 相关阅读:
    UIApplicationMain函数做了什么
    Navigation Bar的简单设置
    Xcode调试 之 内存泄露 .
    ASIHTTPRequest类库简介和使用说明
    IOS开源项目汇总
    列表框的左右移动,单个,多个,全部
    window.showModalDialog以及window.open用法简介
    URL编码方法比较 Encode,Javascript,escape,encodeURI,encodeURIComponent,UTF8
    实现repeater控件多列显示 简单方法(用CSS float属性)
    如何部署强命名程序集(Strong Name Assembly)和GAC
  • 原文地址:https://www.cnblogs.com/yy20141204bb/p/8421117.html
Copyright © 2011-2022 走看看