2010-04-05 4 views
1

Je suis en train de créer une clé étrangère dans ma table. Mais quand j'exécute ma requête, il me montre une erreur 150.Je ne suis pas en mesure de créer une clé étrangère dans mysql Erreur 150. S'il vous plaît aider

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

Mes requêtes sont

requête pour créer une clé étrangère

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

primaire Table Clé

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 

étrangères Tableau des clés

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: Vous devriez créer une nouvelle question au lieu de changer votre ancienne question. Dans votre nouvelle question, retournez à votre question initiale si elle fournit des informations générales utiles. Lorsque vous changez une question en une autre, les réponses existantes n'ont plus de sens et deviennent donc inutiles pour d'autres personnes ayant le même problème qui trouvent ce site via Google. –

Répondre

2

Votre problème est le type des colonnes de votre contrainte sont différentes. Ils doivent être les mêmes.

`PickPointId` int(4) NOT NULL auto_increment, 

`GuardianPickPointId` varchar(100) default NULL, 

Pour plus d'informations, voir the documentation:

colonnes correspondantes dans la clé étrangère et la clé de référence doit avoir des types de données internes similaires InnoDB afin qu'ils puissent être comparés sans conversion de type. La taille et le signe des types entiers doivent être identiques. La longueur des types de chaînes n'a pas besoin d'être la même. Pour les colonnes de chaîne non-binaires (caractères), le jeu de caractères et le classement doivent être identiques.

Questions connexes