第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

MySQL使用ForeignKeys創(chuàng)建表并給出errno:150

MySQL使用ForeignKeys創(chuàng)建表并給出errno:150

慕田峪4524236 2019-06-03 16:38:54
MySQL使用ForeignKeys創(chuàng)建表并給出errno:150我試圖用兩個(gè)外鍵在MySQL中創(chuàng)建一個(gè)表,這兩個(gè)外鍵引用了另外兩個(gè)表中的主鍵,但是我得到了一個(gè)errno:150錯(cuò)誤,它不會(huì)創(chuàng)建這個(gè)表。以下是所有3個(gè)表的SQL:CREATE TABLE role_groups (   `role_group_id` int(11) NOT NULL `AUTO_INCREMENT`,   `name` varchar(20),   `description` varchar(200),   PRIMARY KEY (`role_group_id`)) ENGINE=InnoDB;CREATE TABLE IF NOT EXISTS `roles` (   `role_id` int(11) NOT NULL AUTO_INCREMENT,   `name` varchar(50),   `description` varchar(200),   PRIMARY KEY (`role_id`)) ENGINE=InnoDB;create table role_map (   `role_map_id` int not null `auto_increment`,   `role_id` int not null,   `role_group_id` int not null,   primary key(`role_map_id`),   foreign key(`role_id`) references roles(`role_id`),   foreign key(`role_group_id`) references role_groups(`role_group_id`)) engine=InnoDB;任何幫助都將不勝感激。
查看完整描述

4 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

MySQL通用的“errno 150”消息表示未正確形成外鍵約束。“正如您可能已經(jīng)知道的,如果您正在閱讀此頁(yè)面,一般的“errno:150”錯(cuò)誤消息實(shí)際上是沒(méi)有幫助的。然而:

你可以得到實(shí)際通過(guò)運(yùn)行錯(cuò)誤消息SHOW ENGINE INNODB STATUS;然后尋找LATEST FOREIGN KEY ERROR在輸出中。

例如,試圖創(chuàng)建外鍵約束:

CREATE TABLE t1(id INTEGER);CREATE TABLE t2(t1_id INTEGER,
 CONSTRAINT FOREIGN KEY (t1_id) REFERENCES t1 (id));

錯(cuò)誤失敗Can't create table 'test.t2' (errno: 150)..這不會(huì)告訴任何人任何有用的東西,除了這是一個(gè)外鍵問(wèn)題。但是跑SHOW ENGINE INNODB STATUS;它會(huì)說(shuō):

------------------------
LATEST FOREIGN KEY ERROR
------------------------
130811 23:36:38 Error in foreign key constraint of table test/t2:
FOREIGN KEY (t1_id) REFERENCES t1 (id)):
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.

它說(shuō)問(wèn)題在于它找不到索引。SHOW INDEX FROM t1顯示表中根本沒(méi)有索引。t1..通過(guò),比如說(shuō),定義主鍵來(lái)解決這個(gè)問(wèn)題。t1,將成功創(chuàng)建外鍵約束。


查看完整回答
反對(duì) 回復(fù) 2019-06-03
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊

確保您試圖使用約束鏈接的兩個(gè)字段的屬性完全相同。

通常,ID列上的“unsigned”屬性會(huì)捕獲您。

ALTER TABLE `dbname`.`tablename` CHANGE `fieldname` `fieldname` int(10) UNSIGNED NULL;


查看完整回答
反對(duì) 回復(fù) 2019-06-03
?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

運(yùn)行此腳本時(shí),數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài)如何?完全是空的嗎?在從頭創(chuàng)建數(shù)據(jù)庫(kù)時(shí),您的SQL運(yùn)行良好,但errno 150通常與刪除和重新創(chuàng)建作為外鍵一部分的表有關(guān)。我有種感覺(jué),你不是在用一個(gè)100%新鮮的新數(shù)據(jù)庫(kù)。

如果您在對(duì)SQL文件進(jìn)行“source”時(shí)出錯(cuò),您應(yīng)該能夠在MySQL提示符“Source”命令之后立即運(yùn)行命令“Show Engine INNODB Status”,以查看更詳細(xì)的錯(cuò)誤信息。

您可能也需要查看手冊(cè)條目:

如果您重新創(chuàng)建一個(gè)被刪除的表,它必須有一個(gè)符合引用它的外鍵約束的定義。如前面所述,它必須具有正確的列名和類型,并且必須在引用的鍵上有索引。如果不滿足這些要求,MySQL將返回錯(cuò)誤號(hào)1005,并在錯(cuò)誤消息中引用錯(cuò)誤150。如果MySQL從CREATETABLE語(yǔ)句中報(bào)告錯(cuò)誤號(hào)1005,并且錯(cuò)誤消息引用錯(cuò)誤150,則表創(chuàng)建失敗,因?yàn)橥怄I約束沒(méi)有正確形成。

— MySQL 5.1參考手冊(cè).


查看完整回答
反對(duì) 回復(fù) 2019-06-03
  • 4 回答
  • 0 關(guān)注
  • 816 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)