1

次のテーブルを作成しましたが、外部キー制約スクリプトが機能しない理由がわかりません。

CREATE TABLE IF NOT EXISTS `project` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`project_id` varchar(60) NOT NULL,
`project_name` varchar(500) NOT NULL,
`cons_bal` int(11) NOT NULL,
`non_cons_bal` int(11) NOT NULL,
`budget_head` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

そして、ここに私の別のテーブルがあります:

CREATE TABLE IF NOT EXISTS `project_map` (
`id` int(11) NOT NULL,
`project_id` varchar(60) NOT NULL,
`head` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

そして、ここに私の追加制約行があります:

alter table project_map add constraint p_map_fk001 foreign key (`project_id`) references project(`project_id`)

どんな助けでもいいでしょう。ありがとうございました。

4

1 に答える 1

1

参照されるテーブルには、参照される列が最初の列として同じ順序でリストされているインデックスが必要です。

参照: http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

だから試してください:

CREATE TABLE `project` (                                                                                                                                                                                                                                                                                                                             
           `id` int(11) NOT NULL AUTO_INCREMENT,                                                                                                                                                                                                                                                                                                              
           `project_id` varchar(60) NOT NULL,                                                                                                                                                                                                                                                                                                                 
           `project_name` varchar(500) NOT NULL,                                                                                                                                                                                                                                                                                                              
           `cons_bal` int(11) NOT NULL,                                                                                                                                                                                                                                                                                                                       
           `non_cons_bal` int(11) NOT NULL,                                                                                                                                                                                                                                                                                                                   
           `budget_head` varchar(100) NOT NULL,                                                                                                                                                                                                                                                                                                               
           PRIMARY KEY (`id`),                                                                                                                                                                                                                                                                                                                                
           KEY `project_id` (`project_id`)                                                                                                                                                                                                                                                                                                                    
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8   


CREATE TABLE `project_map` (                                                                                                                                                                                        
               `id` int(11) NOT NULL,                                                                                                                                                                                            
               `project_id` varchar(60) NOT NULL,                                                                                                                                                                                
               `head` int(11) NOT NULL,                                                                                                                                                                                          
               PRIMARY KEY (`id`),                                                                                                                                                                                               
               KEY `project_id` (`project_id`)                                                                                                                                                                                   
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

ALTER TABLE `project_map` ADD CONSTRAINT 
`p_map_fk001` FOREIGN KEY (`project_id`)
REFERENCES project(`project_id`);
于 2013-07-26T08:03:01.193 に答える