2010-04-05 115 views
1

我想在我的表中創建一個外鍵。但是,當我執行我的查詢它讓我錯誤150我無法在mysql錯誤150中創建外鍵。請幫助

Error Code : 1025 
Error on create foreign key of '.\vts\#sql-6ec_1' to '.\vts\tblguardian' (errno: 150) 
(0 ms taken) 

我的查詢是

查詢來創建一個外鍵

alter table `vts`.`tblguardian` add constraint `FK_tblguardian` FOREIGN KEY (`GuardianPickPointId`) REFERENCES `tblpickpoint` (`PickPointId`) 

主鍵表

CREATE TABLE `tblpickpoint` (               
       `PickPointId` int(4) NOT NULL auto_increment,           
       `PickPointName` varchar(500) default NULL,            
       `PickPointLabel` varchar(500) default NULL,           
       `PickPointLatLong` varchar(100) NOT NULL,            
       PRIMARY KEY (`PickPointId`)               
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC 

外交密鑰表

CREATE TABLE `tblguardian` (       
       `GuardianId` int(4) NOT NULL auto_increment,   
       `GuardianName` varchar(500) default NULL,    
       `GuardianAddress` varchar(500) default NULL,   
       `GuardianMobilePrimary` varchar(15) NOT NULL,   
       `GuardianMobileSecondary` varchar(15) default NULL, 
       `GuardianPickPointId` int(4) default NULL,  
       PRIMARY KEY (`GuardianId`)       
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1  
+0

@Shantanu Gupta:你應該創造一個新的問題,而不是改變你的舊問題。在你的新問題中,如果它提供有用的背景信息,請鏈接回原來的問題。當您將問題更改爲另一個問題時,現有答案不再有意義,因此對於通過Google查找此網站的同一問題的其他人無效。 – 2010-04-05 08:03:10

回答

2

你的問題是在你的約束列的類型是不同的。他們必須是一樣的。

`PickPointId` int(4) NOT NULL auto_increment, 

`GuardianPickPointId` varchar(100) default NULL, 

欲瞭解更多信息,請參閱the documentation

相應列的外鍵,以便他們可以在沒有類型轉換比較的參考密鑰必須有InnoDB內類似的內部數據類型。整數類型的大小和符號必須相同。字符串類型的長度不需要相同。對於非二進制(字符)字符串列,字符集和歸類必須相同。

相關問題