0

我想创建一个数据库并将其与两个数据库连接。但我不知道当我为第二个数据库(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

outletId您必须为and timeShiftIdUNIQUE或根据需要)定义索引,KEY以便能够使用该字段创建外键。

于 2013-01-26T04:12:16.783 回答