-1
     CREATE TABLE `job` (
    `jobId` int(11) NOT NULL auto_increment,
    `jobcode` varchar(25) default NULL,
    `jobname` varchar(255) default NULL,
    `location` varchar(255) default NULL,
    `budget` int(10) unsigned default NULL,
    `year_type` varchar(100) default NULL,
    `worklineId` int(11) default NULL,
     PRIMARY KEY  (`jobId`),
     KEY `NewIndex` (`worklineId`),
     FOREIGN KEY (`worklineId`) REFERENCES `workline` (`worklineId`)
     ) TYPE=InnoDB;

     CREATE TABLE `subjob` (
    `subjobId` int(11) NOT NULL auto_increment,
    `subjobcode` varchar(25) default NULL,
    `subjobname` varchar(255) default NULL,
    `subjobbudget` int(11) unsigned default NULL,
    `jobgoal_date` date default '0000-00-00',
    `jobId` int(11) default NULL,
     PRIMARY KEY  (`subjobId`),
     KEY `NewIndex` (`jobId`),
     FOREIGN KEY (`jobId`) REFERENCES `job` (`jobId`)
     ) TYPE=InnoDB;

     CREATE TABLE `contract` (
    `contractId` int(11) NOT NULL auto_increment,
    `contractcode` varchar(25) default NULL,
    `price` int(11) unsigned default NULL,
    `contractprice` int(11) unsigned default NULL,
    `company` varchar(50) default NULL,
    `signdate` date default '0000-00-00',
    `begindate` date default '0000-00-00',
    `enddateplan` date default '0000-00-00',
    `note` text,
     PRIMARY KEY  (`contractId`)
     ) TYPE=InnoDB;


     CREATE TABLE `subjob_contract` (
    `subjobcontractId` int(11) NOT NULL auto_increment,
    `status` varchar(11) default NULL,
    `contractId` int(11) default NULL,
    `subjobId` int(11) default NULL,
     PRIMARY KEY  (`subjobcontractId`),
     KEY `NewIndex` (`contractId`),
     KEY `NewIndex2` (`subjobId`),
     FOREIGN KEY (`contractId`) REFERENCES `contract` (`contractId`)
     ) TYPE=InnoDB

データベースを管理するためにmysqlfront3.2を使用していますが、最初のfkを追加できますが、2番目のfkを追加すると、次のエラーが発生します:sql実行エラー#1005。データベースからの応答:テーブル'.jobstatus#sql-32c_12f2f.frm'(errno:150)を作成できません。サブジョブテーブルへのfksubjobId参照の新しいインデックスをすでに定義していますが、このエラーの可能性は何ですか?ありがとうございました

4

2 に答える 2

0

主テーブルと参照テーブルのsubjobId列のデータ型とサイズを確認してください。外部キーを作成できるようにするには、両方を同じにする必要があります。

于 2012-11-21T04:50:31.890 に答える