偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MySQL數(shù)據(jù)庫(kù)建立外鍵失敗的原因總結(jié)

數(shù)據(jù)庫(kù) MySQL
本文主要總結(jié)了幾種MySQL創(chuàng)建外鍵失敗時(shí)可能的原因,并按照可能性的大小進(jìn)行了排序,希望能夠?qū)δ兴鶐椭?/div>

MySQL數(shù)據(jù)庫(kù)創(chuàng)建外鍵時(shí),經(jīng)常會(huì)發(fā)生一些錯(cuò)誤,這是一件很令人頭疼的事。一個(gè)典型的錯(cuò)誤就是:Can’t create table... 的錯(cuò)誤。在很多實(shí)例中,這種錯(cuò)誤的發(fā)生都是因?yàn)閙ysql一直以來(lái)都不能很好的支持的關(guān)系的問(wèn)題, 更不幸的是它也并沒(méi)有指明到底是哪一個(gè)問(wèn)題會(huì)導(dǎo)致上面那種錯(cuò)誤,下面我把導(dǎo)致這個(gè)可怕的150錯(cuò)誤的常見(jiàn)原因列出來(lái)了,并且我以可能性的大小作了排序,已知的原因: 

1.兩個(gè)字段的類型或者大小不嚴(yán)格匹配,例如,如果一個(gè)是INT(10), 那么外鍵也必須設(shè)置成INT(10), 而不是 INT(11) 也不能是TINYINT. 你得使用SHOW命令來(lái)查看字段的大小,因?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è)外鍵沒(méi)有建立起索引,或者不是一個(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)生外鍵),你可以通過(guò)查詢?yōu)g覽器來(lái)設(shè)置表的引擎類型。

5.你可能設(shè)置了ON DELETE SET NULL, 但是相關(guān)的鍵的字段又設(shè)置成了NOTS NULL 值。你可能通過(guò)修改cascade 的屬性值或者把字段屬性設(shè)置成allow null來(lái)搞定這個(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è),它沒(méi)有自己獨(dú)立的索引,這時(shí),你必須為它創(chuàng)建一個(gè)獨(dú)立的索引。 

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

以上就是MySQL創(chuàng)建外鍵失敗時(shí)可能原因的總結(jié),如果您想了解更多關(guān)于MySQL數(shù)據(jù)庫(kù)的內(nèi)容,可以看一下這里的文章:http://database.51cto.com/mysql/,相信一定可以帶給您收獲的!

【編輯推薦】

  1. MySQL數(shù)據(jù)庫(kù)命令行常用命令大全總結(jié)篇
  2. MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)跨表更新與數(shù)據(jù)并合
  3. MySQL數(shù)據(jù)庫(kù)修改MySQL密碼的六種措施總結(jié)
  4. MySQL數(shù)據(jù)庫(kù)如何刪除表中部分關(guān)鍵字段重復(fù)的記錄
  5. 如何解決MySQL數(shù)據(jù)庫(kù)主從服務(wù)器之間數(shù)據(jù)有差距問(wèn)題
責(zé)任編輯:趙鵬 來(lái)源: 博客園
相關(guān)推薦

2010-01-05 09:24:42

MySQL外鍵約束

2011-09-01 10:56:34

2010-10-09 10:29:29

MySQL外鍵

2010-05-11 18:46:46

MYSQL 外鍵

2010-05-17 16:10:39

MySQL數(shù)據(jù)庫(kù)

2019-11-05 08:20:13

MySQL數(shù)據(jù)庫(kù)外鍵

2010-06-17 17:50:31

SQL Server外

2010-09-13 13:44:22

sql server外

2019-01-02 11:10:40

MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)設(shè)計(jì)

2016-12-29 12:24:33

MySQL數(shù)據(jù)庫(kù)移植

2020-06-09 09:19:14

數(shù)據(jù)庫(kù)

2009-02-03 13:06:17

日常維護(hù)規(guī)范MySQL

2011-08-03 17:43:53

MySQL數(shù)據(jù)庫(kù)外鍵約束

2010-06-04 19:24:15

重裝MySQL數(shù)據(jù)庫(kù)

2011-08-22 15:31:51

SQL Servermssqlserver數(shù)據(jù)庫(kù)復(fù)制

2018-11-29 14:30:42

數(shù)據(jù)庫(kù)外鍵約束應(yīng)用程序

2010-05-24 17:54:25

2019-07-11 08:45:00

MySQL數(shù)據(jù)庫(kù)緩存

2010-11-22 09:43:07

MySQL定義外鍵

2010-10-09 09:55:41

MySQL外鍵
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)