最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL報錯Failed to open the referenced table XXX問題

 更新時間:2024年11月06日 10:46:11   作者:A_bad_horse  
在數(shù)據(jù)庫操作中,嘗試刪除外鍵約束表'master_role'時遇到錯誤碼3730,因其被'user_role'表中的外鍵'fk_user_role'引用,解決方法包括關閉外鍵檢查和刪除外鍵,阿里巴巴開發(fā)手冊和知乎回答指出,外鍵雖能維護數(shù)據(jù)一致性

問題復現(xiàn)

CREATE TABLE `master_role` (
  `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `role` VARCHAR(50) CHARACTER SET latin1 NOT NULL COMMENT 'Role',
  `active` TINYINT NOT NULL COMMENT 'Active',
  PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET=utf8mb4
COMMENT = 'Master Role';
CREATE TABLE `user_role` (
  `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `email` VARCHAR(150) NOT NULL COMMENT 'Email',
  `role_id` INTEGER NOT NULL COMMENT 'Role ID',
  PRIMARY KEY (`id`),
  KEY `fk_user_role_idx` (`role_id`),
  CONSTRAINT `fk_user_role` FOREIGN KEY (`role_id`) REFERENCES `master_role` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
)
ENGINE = InnoDB
DEFAULT CHARSET=utf8mb4
COMMENT = 'User Role';

step1: create table master_role

step2: create table user_role

step3: DROP TABLE IF EXISTS master_role;

Error Code: 3730. Cannot drop table 'master_role' referenced by a foreign key constraint 'fk_user_role' on table 'user_role'.

解決方案

方案一:關閉外鍵檢查

SET foreign_key_checks=0;  # 關閉外鍵檢查
DROP TABLE Course;
SET foreign_key_checks=1;  # 開啟外鍵檢查

關閉檢查之后,如果下次還要使用外鍵就要再次打開檢查,較為繁瑣。

方案二:刪除外鍵

#user_role表刪除外鍵
ALTER TABLE user_role DROP FOREIGN KEY fk_user_role;
#刪表
DROP TABLE IF EXISTS master_role;

外鍵

阿里規(guī)范

源自《阿里巴巴開發(fā)手冊》

實例:

假設刪除微博某V,其粉絲關系表中的百萬條數(shù)據(jù)如果有外鍵約束,就會影響性能。

來自知乎的回答

  • 外鍵約束是物理上的“硬綁定”,而表的關聯(lián)只是一種邏輯概念,即數(shù)據(jù)間存在一定的聯(lián)系。數(shù)據(jù)庫通過外鍵建立的“硬綁定”會帶來額外的資源消耗來進行一致性和完整性校驗,盡管有時候無需這些校驗。
  • 因此,一般不建議使用外鍵約束來保證數(shù)據(jù)的一致性和完整性。--- 源自知乎

外鍵作用:維護數(shù)據(jù)一致性和完整性,避免借助外部資源(例如:啟用事務)。

何時使用:高并發(fā)大流量事務場景使用外鍵容易造成死鎖,數(shù)據(jù)庫資源會更容易出現(xiàn)瓶頸。一般互聯(lián)網(wǎng)很少使用外鍵。--- 源自知乎

總結(jié)

實際建表時,不建外鍵。

表之間的關聯(lián)可以通過建立索引(咨詢同事得到的答案,后續(xù)會就此問題寫博客解答)。

更新user_role表的創(chuàng)建語句,刪除外鍵。

CREATE TABLE `user_role` (
  `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `email` VARCHAR(150) NOT NULL COMMENT 'Email',
  `role_id` INTEGER NOT NULL COMMENT 'Role ID',
  PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET=utf8mb4
COMMENT = 'User Role';

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 如何在Java程序中訪問mysql數(shù)據(jù)庫中的數(shù)據(jù)并進行簡單的操作

    如何在Java程序中訪問mysql數(shù)據(jù)庫中的數(shù)據(jù)并進行簡單的操作

    這篇文章主要介紹了如何在Java程序中訪問mysql數(shù)據(jù)庫中的數(shù)據(jù)并進行簡單的操作的相關資料,需要的朋友可以參考下
    2016-05-05
  • Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計人數(shù)的方法示例

    Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計人數(shù)的方法示例

    這篇文章主要給大家介紹了關于Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計人數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效)

    mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效)

    這篇文章主要介紹了mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • mysql 8.0.18 安裝配置方法圖文教程(linux)

    mysql 8.0.18 安裝配置方法圖文教程(linux)

    這篇文章主要介紹了linux下mysql 8.0.18 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Mysql效率優(yōu)化定位較低sql的兩種方式

    Mysql效率優(yōu)化定位較低sql的兩種方式

    通過慢查詢?nèi)罩径ㄎ荒切﹫?zhí)行效率較低的 SQL 語句,用 --log-slow-queries[=file_name] 選項啟動時, mysqld 會 寫一個包含所有執(zhí)行時間超過 long_query_time 秒的 SQL 語句的日志文件,通過查看這個日志文件定位效率較低的 SQL
    2015-10-10
  • Mysql?sql?如何對行數(shù)據(jù)求和

    Mysql?sql?如何對行數(shù)據(jù)求和

    這篇文章主要介紹了Mysql使用sql實現(xiàn)對行數(shù)據(jù)求和問題,具有很好的參考價值,希望對大家有所幫助。
    2023-05-05
  • Mysql大表修改字段兩種解決方式

    Mysql大表修改字段兩種解決方式

    這篇文章主要給大家介紹了關于Mysql大表修改字段的兩種解決方式,文中介紹了在處理平臺幣訂單表字段類型修改時遇到的問題及解決方案,需要的朋友可以參考下
    2024-11-11
  • MySql數(shù)據(jù)庫基礎之子查詢詳解

    MySql數(shù)據(jù)庫基礎之子查詢詳解

    所謂子查詢是指在一個查詢中嵌套了其他的若干查詢,即在一個SELECT查詢語句的WHERE或FROM子句中包含另一個SELECT查詢語句,下面這篇文章主要給大家介紹了關于MySQL子查詢的相關資料,需要的朋友可以參考下
    2022-09-09
  • MYSQL與sqlyog連接的實現(xiàn)

    MYSQL與sqlyog連接的實現(xiàn)

    本文主要介紹了MYSQL與sqlyog連接的實現(xiàn),文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-10-10
  • MySQL中修改庫名的操作教程

    MySQL中修改庫名的操作教程

    這篇文章主要介紹了MySQL中修改庫名的操作教程,是MySQL學習當中的基礎知識,需要的朋友可以參考下
    2015-05-05

最新評論

宜宾市| 遂平县| 济阳县| 威海市| 濮阳市| 都江堰市| 临朐县| 岳池县| 沅江市| 炎陵县| 昌图县| 同仁县| 连南| 柯坪县| 宜良县| 峨边| 积石山| 民勤县| 濮阳市| 文成县| 阜平县| 通化市| 阳春市| 罗甸县| 大连市| 鄂托克旗| 广平县| 德保县| 平武县| 津南区| 喀喇| 莆田市| 鹤岗市| 潍坊市| 米易县| 盐山县| 贺兰县| 库车县| 巴中市| 合山市| 娄烦县|