欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析MySQL創(chuàng)建外鍵關(guān)聯(lián)錯(cuò)誤 - errno:150

 更新時(shí)間:2013年06月14日 10:14:59   作者:  
本篇文章是對(duì)MySQL創(chuàng)建外鍵關(guān)聯(lián)錯(cuò)誤-errno:150進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

當(dāng)你試圖在mysql中創(chuàng)建一個(gè)外鍵的時(shí)候,這個(gè)出錯(cuò)會(huì)經(jīng)常發(fā)生,這是非常令人沮喪的。像這種不能創(chuàng)建一個(gè).frm 文件的報(bào)錯(cuò)好像暗示著操作系統(tǒng)的文件的權(quán)限錯(cuò)誤或者其它原因,但實(shí)際上,這些都不是的,事實(shí)上,這個(gè)mysql報(bào)錯(cuò)已經(jīng)被報(bào)告是一個(gè)mysql本身的bug并出現(xiàn)在mysql 開發(fā)者列表當(dāng)中很多年了,然而這似乎又是一種誤導(dǎo)。

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

已知的原因:

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

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

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

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

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

6, 請(qǐng)確定你的Charset 和 Collate 選項(xiàng)在表級(jí)和字段級(jí)上的一致

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

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

9, ALTER 聲明中有語(yǔ)法錯(cuò)誤

10. 要連接的兩個(gè)表的編碼格式不同

相關(guān)文章

  • mysql服務(wù)器查詢慢原因分析與解決方法小結(jié)

    mysql服務(wù)器查詢慢原因分析與解決方法小結(jié)

    在開發(fā)的朋友特別是和mysql有接觸的朋友會(huì)碰到有時(shí)mysql查詢很慢,當(dāng)然我指的是大數(shù)據(jù)量百萬(wàn)千萬(wàn)級(jí)了,不是幾十條了,下面我們來看看解決查詢慢的辦法
    2012-04-04
  • mysql服務(wù)啟動(dòng)不了解決方案

    mysql服務(wù)啟動(dòng)不了解決方案

    最近在Windows 2003上的MySQL出現(xiàn)過多次正常運(yùn)行時(shí)無法連接數(shù)據(jù)庫(kù)故障,現(xiàn)象是無法連接數(shù)據(jù)庫(kù),也無法停止MySQL或重啟MYSQL,由于每次都是草草嘗試各種方法搞定即可本文將詳細(xì)介紹解決方法
    2012-11-11
  • Mysql5.7并發(fā)插入死鎖問題解決

    Mysql5.7并發(fā)插入死鎖問題解決

    死鎖是數(shù)據(jù)庫(kù)并發(fā)控制中的一種現(xiàn)象,它涉及多個(gè)事務(wù)在執(zhí)行過程中相互等待對(duì)方占有的資源,導(dǎo)致無法繼續(xù)執(zhí)行,本文就來介紹一下Mysql5.7并發(fā)插入死鎖問題解決,感興趣的可以了解一下
    2024-09-09
  • MySQL深分頁(yè)問題的原因及解決方案

    MySQL深分頁(yè)問題的原因及解決方案

    MySQL?作為最受歡迎的開源關(guān)系數(shù)據(jù)庫(kù)之一,被廣泛用于各種規(guī)模的應(yīng)用程序中,分頁(yè)是一種常見的數(shù)據(jù)檢索技術(shù),它允許用戶在大量數(shù)據(jù)中瀏覽和檢索信息,當(dāng)涉及到“深分頁(yè)”時(shí),即查詢大量數(shù)據(jù)后的頁(yè)面時(shí),MySQL?的性能可能會(huì)顯著下降,本文介紹了MySQL深分頁(yè)問題的原因及解決方案
    2024-09-09
  • MySQL給字符串加一個(gè)高效索引的實(shí)現(xiàn)

    MySQL給字符串加一個(gè)高效索引的實(shí)現(xiàn)

    本文主要介紹了MySQL給字符串加一個(gè)高效索引的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • mysql解壓縮方式安裝和徹底刪除的方法圖文詳解

    mysql解壓縮方式安裝和徹底刪除的方法圖文詳解

    這篇文章主要介紹了mysql解壓縮方式安裝和徹底刪除的方法,只有mysql徹底刪除干凈了,才可以裝另外新的版本,需要的朋友可以參考下
    2018-01-01
  • MYSQL表優(yōu)化方法小結(jié) 講的挺全面

    MYSQL表優(yōu)化方法小結(jié) 講的挺全面

    一篇MYSQL表優(yōu)化的文章,說的很好,使用mysql的朋友可以參考下。
    2010-05-05
  • Mysql中order by、group by、having的區(qū)別深入分析

    Mysql中order by、group by、having的區(qū)別深入分析

    本篇文章是對(duì)Mysql中order by、group by、having的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Mysql如何解決1251 client does not support問題

    Mysql如何解決1251 client does not support問題

    這篇文章主要介紹了Mysql如何解決1251 client does not support問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL鎖的知識(shí)點(diǎn)總結(jié)

    MySQL鎖的知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了關(guān)于MySQL鎖的知識(shí)點(diǎn)總結(jié)以及實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-11-11

最新評(píng)論