MySQL添加外鍵報(bào)錯(cuò)Cannot add foreign key constraint怎么解決?
mysql添加外鍵報(bào)錯(cuò):Cannot add foreign key constraint
問題描述:
error1512 Cannot add foreign key constraint或是error1452 Cannot add foreign key constraint等。
解決辦法
首先定義一個(gè)表a(字段名有id(主鍵),name,pas),
表b(id(主鍵),user_phone,user_collect)。
其實(shí)也就是添加外鍵步驟:
假設(shè)b表的user_phone要設(shè)置外鍵,且為a表的name(前提)
首先要知道:
- 1.外鍵字段不能為該表的主鍵,即id的外鍵不存在;
- 2.外聯(lián)字段要是主鍵或key或uniquekey等。在這里我們需要把表a的name字段設(shè)置為uniquekey。
- 3.字段與外聯(lián)字段的數(shù)據(jù)類型,長(zhǎng)度,默認(rèn)類型,排序等一直才行。這里我們加入a表中的name字段為varchar(20)utf8_bin,那么表b中的user_phone也要一樣才行。
- 4.想要設(shè)置外鍵的表要沒有數(shù)據(jù)才行。即表b中無數(shù)據(jù)才能設(shè)置外鍵。
- 5.數(shù)據(jù)庫(kù)引擎設(shè)置為INNODB型,即支持事務(wù)處理(mysql5.5版本以上默認(rèn)類型)
- 6.如果問題還未解決看一下兩張表的主鍵屬性能否一致。
經(jīng)過上面幾個(gè)過程就可以完成外鍵的設(shè)置了,你可以設(shè)置如下:

在DELETE下設(shè)置RESTROCT為CASCADE時(shí)會(huì)有表a中刪除數(shù)據(jù),表b中關(guān)聯(lián)數(shù)據(jù)也會(huì)自動(dòng)清除的效果。
關(guān)于引擎類型查看
右鍵設(shè)計(jì)表,點(diǎn)擊選項(xiàng)即可查看!

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于mysql+mycat搭建穩(wěn)定高可用集群負(fù)載均衡主備復(fù)制讀寫分離操作
這篇文章主要介紹了基于mysql+mycat搭建穩(wěn)定高可用集群負(fù)載均衡主備復(fù)制讀寫分離操作,需要的朋友可以參考下2018-09-09
深入探究MySQL事務(wù)實(shí)現(xiàn)原理
數(shù)據(jù)庫(kù)事務(wù)是指一組數(shù)據(jù)庫(kù)操作,這些操作必須被視為一個(gè)不可分割的單元,要么全部執(zhí)行成功,要么全部失敗回滾,本文詳細(xì)的給大家介紹了MySQL事務(wù)的實(shí)現(xiàn)原理,對(duì)我們學(xué)習(xí)MySQL有一定的幫助,感興趣的同學(xué)可以跟著小編一起來探究2023-06-06
MySQL中索引失效場(chǎng)景,原因以及解決方法介紹
這篇文章主要為大家詳細(xì)介紹了MySQL中索引失效場(chǎng)景,原因以及解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-07-07
詳解mysql集群:一主多從架構(gòu)實(shí)現(xiàn)
這篇文章主要介紹了mysql集群一主多從架構(gòu)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
mysql自動(dòng)化安裝腳本(ubuntu and centos64)
這篇文章主要介紹了mysql自動(dòng)化安裝腳本(ubuntu and centos64),需要的朋友可以參考下2014-05-05
MySQL日期格式化yyyy-mm-dd詳解(DATE_FORMAT()函數(shù))
MySQL提供了很多功能強(qiáng)大、方便易用的函數(shù),在進(jìn)行數(shù)據(jù)庫(kù)管理以及數(shù)據(jù)的查詢和操作時(shí),幫助我們提高對(duì)數(shù)據(jù)庫(kù)的管理效率,下面這篇文章主要給大家介紹了關(guān)于MySQL日期格式化yyyy-mm-dd(DATE_FORMAT()函數(shù))的相關(guān)資料,需要的朋友可以參考下2023-01-01
給MySQL表中的字段設(shè)置默認(rèn)值的兩種方法
在MySQL中,我們可以為表的字段設(shè)置默認(rèn)值,以確保在插入新記錄時(shí),如果沒有為該字段指定值,將使用默認(rèn)值,要為MySQL表中的字段設(shè)置默認(rèn)值,我們可以在創(chuàng)建表時(shí)或者在已存在的表上使用ALTER TABLE語(yǔ)句進(jìn)行修改,下面將展示兩種設(shè)置默認(rèn)值的方法,需要的朋友可以參考下2023-11-11
分享MySQL生產(chǎn)庫(kù)內(nèi)存異常增高的排查過程
這篇文章主要介紹了分享MySQL生產(chǎn)庫(kù)內(nèi)存異常增高的排查過程,基于MySQL實(shí)例的內(nèi)存使用率高的報(bào)警的問題展開對(duì)主題的問題,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04
MySQL?ENUM一個(gè)字段引發(fā)的故障踩坑實(shí)錄
Mysql中的enum類型就是我們常說的枚舉類型,它的取值范圍需要在創(chuàng)建表時(shí)通過枚舉方式(一個(gè)個(gè)的列出來)顯式指定,這篇文章主要介紹了MySQL?ENUM一個(gè)字段引發(fā)的故障踩坑實(shí)錄的相關(guān)資料,需要的朋友可以參考下2026-01-01
mysql復(fù)制data文件遷移的實(shí)現(xiàn)步驟
有時(shí)候,我們需要遷移整個(gè)數(shù)據(jù)庫(kù),包括數(shù)據(jù)文件,本文將介紹如何通過復(fù)制MySQL的data文件來完成數(shù)據(jù)庫(kù)遷移,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

