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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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我試圖用兩個外鍵在MySQL中創(chuàng)建一個表,這兩個外鍵引用了另外兩個表中的主鍵,但是我得到了一個errno:150錯誤,它不會創(chuàng)建這個表。以下是所有3個表的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)驗 獲得超4個贊

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

你可以得到實(shí)際通過運(yùn)行錯誤消息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));

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

------------------------
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.

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


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

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

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

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

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


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

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

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

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

您可能也需要查看手冊條目:

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

— MySQL 5.1參考手冊.


查看完整回答
反對 回復(fù) 2019-06-03
  • 4 回答
  • 0 關(guān)注
  • 834 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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