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

mysql處理添加外鍵時提示error 150 問題的解決方法

 更新時間:2011年11月15日 01:56:52   作者:  
當(dāng)你試圖在mysql中創(chuàng)建一個外鍵的時候,這個出錯會經(jīng)常發(fā)生,這是非常令人沮喪的

像這種不能創(chuàng)建一個.frm 文件的報錯好像暗示著操作系統(tǒng)的文件的權(quán)限錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經(jīng)被報告是一個mysql本身的bug并出現(xiàn)在mysql 開發(fā)者列表當(dāng)中很多年了,然而這似乎又是一種誤導(dǎo)。

在很多實例中,這種錯誤的發(fā)生都是因為mysql一直以來都不能很好的支持的關(guān)系的問題, 更不幸的是它也并沒有指明到底是哪一個問題會導(dǎo)致上面那種錯誤,下面我把導(dǎo)致這個可怕 的150錯誤的常見原因列出來了,并且我以可能性的大小作了排序

已知的原因:

1, 兩個字段的類型或者大小不嚴格匹配,例如,如果一個是INT(10), 那么外鍵也必須設(shè)置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令來查看字段的大小,因為一些查詢?yōu)g覽器有時候把 int(10) 和int(11) 都顯示為integer。另外,你還必須確定兩個字段是否一個為 SIGNED,而另一個又是UNSIGNED, 這兩字段必須嚴格地一致匹配,更多關(guān)于signed 和 unsigned 的信息,請參閱:http://www.verysimple.com/blog/?p=57

2, 你試圖引用的其中一個外鍵沒有建立起索引,或者不是一個primary key , 如果其中一個不是primary key 的放,你必須為它創(chuàng)建一個索引。

3, 外鍵的名字是一個已經(jīng)存在的一個鍵值了,這個時候,你應(yīng)該檢查你的數(shù)據(jù)庫以確保外健名字是唯一的,或者你在鍵名后面加上幾個隨機的字符以測試是否是這個原因。

4, 其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發(fā)生,但也不會產(chǎn)生外鍵),你可以通過查詢?yōu)g覽器來設(shè)置表的引擎類型

5, 你可能設(shè)置了ON DELETE SET NULL, 但是相關(guān)的鍵的字段又設(shè)置成了NOTS NULL 值。你可能通過修改cascade 的屬性值或者把字段屬性設(shè)置成 allow null 來搞定這個bug.

6, 請確定你的Charset 和 Collate 選項在表級和字段級上的一致

7, 你可能設(shè)置為外鍵設(shè)置了一個默認值,如 default=0

8, 在這個關(guān)系里面,其中的一個字段是一個混合鍵值中的一個,它沒有自己獨立的索引,這時,你必須為它創(chuàng)建一個獨立的索引。

9, ALTER 聲明中有語法錯誤

1、外鍵的引用類型不一樣,主鍵是int外鍵是char

2、找不到主表中 引用的列

3、主鍵和外鍵的字符編碼不一致

4.還有要建立外鍵的話,要先建立索引。沒有建立索引也會出錯。

我的問題解決方案是在sql后面加上了如下句話,ok!成功導(dǎo)入腳本
ENGINE=INNODB DEFAULT CHARSET=utf8;
charset對應(yīng)的換成你的主鍵表的字符集!

相關(guān)文章

  • MySQL如何快速的創(chuàng)建千萬級測試數(shù)據(jù)

    MySQL如何快速的創(chuàng)建千萬級測試數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于MySQL如何快速的創(chuàng)建千萬級測試數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • MySQL?InnoDB?存儲引擎的底層邏輯架構(gòu)

    MySQL?InnoDB?存儲引擎的底層邏輯架構(gòu)

    這篇文章主要為大家介紹了MySQL?InnoDB?存儲引擎的底層邏輯架構(gòu)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • MySQL分表自動化創(chuàng)建的實現(xiàn)方案

    MySQL分表自動化創(chuàng)建的實現(xiàn)方案

    在數(shù)據(jù)庫應(yīng)用場景中,隨著數(shù)據(jù)量的不斷增長,單表存儲數(shù)據(jù)可能會面臨性能瓶頸,例如查詢、插入、更新等操作的效率會逐漸降低,分表是一種有效的優(yōu)化策略,它將數(shù)據(jù)分散存儲在多個表中,從而提高數(shù)據(jù)庫的性能和可維護性,本文介紹了MySQL分表自動化創(chuàng)建的實現(xiàn)方案
    2025-01-01
  • 一文弄懂MySQL索引創(chuàng)建原則

    一文弄懂MySQL索引創(chuàng)建原則

    在關(guān)鍵字段的索引上建與不建索引,查詢速度相差近100倍,但差的索引和沒有索引效果一樣,索引并非越多越好,因為維護索引需要成本,下面這篇文章主要給大家介紹了關(guān)于MySQL索引創(chuàng)建原則的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • php+mysql prepare 與普通查詢的性能對比實例講解

    php+mysql prepare 與普通查詢的性能對比實例講解

    prepare可以解決大訪問量的網(wǎng)站給數(shù)據(jù)庫服務(wù)器所帶來的負載和開銷,本文章通過實例向大家介紹預(yù)查詢prepare與普通查詢的性能對比,需要的朋友可以參考一下
    2016-11-11
  • 使用RPM包安裝MySQL 5.7.18的教程

    使用RPM包安裝MySQL 5.7.18的教程

    這篇文章主要介紹了使用RPM包安裝MySQL 5.7.18的教程,需要的朋友可以參考下
    2017-04-04
  • 一個簡單的MySQL備份Shell腳本

    一個簡單的MySQL備份Shell腳本

    這篇文章主要介紹了一個簡單的MySQL備份Shell腳本,本文直接給出代碼實例,需要的朋友可以參考下
    2015-07-07
  • mysql密碼忘記怎么辦

    mysql密碼忘記怎么辦

    mysql密碼忘記怎么辦?卸載重裝?這篇文章主要為大家詳細介紹了不卸載也能重新設(shè)置密碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的方案

    MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的方案

    這篇文章主要介紹了MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的情況,文中通過圖文結(jié)合的方式給大家講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • MySQL初學(xué)者可以告別分組聚合查詢的困擾了

    MySQL初學(xué)者可以告別分組聚合查詢的困擾了

    這篇文章主要為大家介紹了MySQL分組聚合查詢的難點講解,幫助MySQL初學(xué)著告別分組聚合查詢的困擾,有需要的朋友可以借鑒參考下,希望能夠有所進步
    2021-10-10

最新評論

偏关县| 托克逊县| 石狮市| 包头市| 北安市| 安泽县| 安平县| 惠水县| 江油市| 宁都县| 扎赉特旗| 花莲市| 水富县| 晋江市| 原平市| 错那县| 桦川县| 华阴市| 英山县| 陵水| 庆阳市| 北海市| 阿克| 谷城县| 三江| 色达县| 奉贤区| 古浪县| 武冈市| 务川| 阿鲁科尔沁旗| 军事| 日土县| 建湖县| 漳州市| 屏山县| 浪卡子县| 政和县| 嘉鱼县| 乐都县| 桃园县|