美文网首页
删除数据库的外键关联

删除数据库的外键关联

作者: 笑疯子 | 来源:发表于2018-07-23 14:18 被阅读13次

    最近接手的一个项目,需要接入第三方支付。但是第三方要求做一个电商去包装一下。开始觉得这包装一个电商就是轻松+愉快。然后噩梦才刚刚开始,在网上随便找了一个开源的电商项目。大刀阔斧的改了一下源码,然后顺利的跑了起来。然而,在这个时候发现数据库共有近百张表,N张那么多有主要外键关联。简单的举个例子。我想要删一个商品分类,你就会发现分类关联着品牌,品牌关联着商品,商品关联着其它属性...等等等等等。

    所以,我就在想,怎么能批量的干掉这些外键关联呢?

    于是乎就掀起了一场我与Mysql之间的腥风血雨。

    1. 首先,批量查询并且生成alert语句
    select CONCAT('ALTER TABLE `', TABLE_NAME, '` DROP FOREIGN KEY `',  CONSTRAINT_NAME, '`;') as 'drop-fk'
    from information_schema.KEY_COLUMN_USAGE 
    where TABLE_SCHEMA = '表模式名'
    and CONSTRAINT_NAME like '外键名模糊搜索'
    and TABLE_NAME = '表名';
    
    1. 上面的SQL执行完成后,alert语句,全选,复制,执行这些alert语句
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B91CAD6AEC`;
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B92FE2B71B`;
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B9387D99AC`;
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B95485C889`;
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B9664C2B1A`;
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B9AA7FDCCE`;
    ALTER TABLE `test` DROP FOREIGN KEY `FK4F1D86B9F24E3275`;
    

    等待着他执行完成,这样,跟这张表相关联的外键就都干掉了。

    由于本人从业没有多久,对数据库又并不是很精通,相对又懒。所以只能以这种方式来解除主外键关联了。如果有大神有更好的方法,可以告诉我,不喜勿喷,个人积累。

    相关文章

      网友评论

          本文标题:删除数据库的外键关联

          本文链接:https://www.haomeiwen.com/subject/xzfjmftx.html