0

データベースを作成し、それを2つのデータベースに接続したい。しかし、2 番目のデータベース (time_shift テーブル) への外部キーをいつ作成するかはわかりません。常にエラー 150 が発生します。

テーブルの構造は次のとおりoutletです。
テーブルアウトレット

そして、これはテーブルの構造ですtime_shift:
テーブル time_shift

そして、これは新しいテーブルを作成するためのクエリtide_cartです:

create table `tide_chart` (
    `id` int(10) not null auto_increment primary key,
    `date` date null,
    `outletId` int(11) not null,
    `timeShiftId` int(11) not null,
    `value` varchar(255) not null,

    unique (`date`, `outletId`, `timeShiftId`),
    foreign key (`outletId`) references `outlet`(`id`) 
        ON update cascade ON delete cascade,
    foreign key (`timeShiftId`) references `time_shift`(`id`) 
        ON update cascade ON delete cascade
) engine=innoDB;

外部キーをテーブルに接続しようとするとエラーが発生する理由を教えてくださいtime_shift


更新: および のダンプ エクスポート構造テーブルをoutlet追加time_shift:

CREATE TABLE `outlet` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; 

  CREATE TABLE `time_shift` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `time_start` time NOT NULL,
   `time_end` time NOT NULL,
   `is_active` tinyint(4) NOT NULL DEFAULT '1',
   `ref_area` int(11) NOT NULL DEFAULT '1',
   PRIMARY KEY (`id`),
   KEY `ref_area` (`ref_area`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
4

2 に答える 2

2

テーブルには InnoDB エンジンを使用する必要があります。time_shift は MyISAM を使用しています。

于 2013-01-26T05:18:59.723 に答える
1

そのフィールドを使用して外部キーを作成できるようにするには、 and のインデックスを (必要に応じて)outletId定義する必要がありtimeShiftIdますUNIQUEKEY

于 2013-01-26T04:12:16.783 に答える