程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 關於mysql外鍵創建失敗的問題

關於mysql外鍵創建失敗的問題

編輯:MySQL綜合教程


關於mysql外鍵創建失敗的問題   創建persons: CREATE TABLE `persons` (   `id_p` int(11) NOT NULL AUTO_INCREMENT,   `lastname` varchar(10) DEFAULT NULL,   `firstname` varchar(10) DEFAULT NULL,   `address` varchar(50) DEFAULT NULL,   `city` varchar(10) DEFAULT NULL,   PRIMARY KEY (`id_p`) );  www.2cto.com     再創建表orders: CREATE TABLE `orders` (   `id_o` int(11) NOT NULL AUTO_INCREMENT,   `orderno` int(11) NOT NULL,   `id_p` int(11) NOT NULL,   PRIMARY KEY (`id_o`),   FOREIGN KEY (`id_p`) REFERENCES `persons` (`id_p`) );   用show create table orders語句,查詢orders的信息發現,外鍵並沒有創建成功。查了一些資料,終於找到了原因。mysql默認創建的表是MyISAM類型的,需要將表的類型指定為innodb:   www.2cto.com   CREATE TABLE `orders` (   `id_o` int(11) NOT NULL AUTO_INCREMENT,   `orderno` int(11) NOT NULL,   `id_p` int(11) NOT NULL,   PRIMARY KEY (`id_o`),   FOREIGN KEY (`id_p`) REFERENCES `persons` (`id_p`) ) ENGINE=InnoDB;   不過這時提示以下錯誤: ERROR 1005 (HY000): Can't create table 'test.orders' (errno: 150) 將persons表的類型也指定為innodb就OK了。   總結一下外鍵創建失敗的幾種情況: 1.外鍵和被引用外鍵類型不一樣,比如integer和double 2.找不到要被引用的列 3.表的字符編碼不一樣  4.數據引擎類型不一致,比如innodb和myisam     作者 gavinr

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved