Mysql #1215-无法添加外键约束

Mysql #1215-无法添加外键约束,mysql,foreign-keys,mysql-5.6,Mysql,Foreign Keys,Mysql 5.6,我在创建外键时遇到了一个奇怪的问题 给出两个表: CREATE TABLE IF NOT EXISTS `groupdeals` ( `groupdeals_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(10) NOT NULL, `merchant_id` int(11) NOT NULL, `minimum_qty` int(11) NOT NULL, `maximum_qty` int(11

我在创建外键时遇到了一个奇怪的问题

给出两个表:

CREATE TABLE IF NOT EXISTS `groupdeals` (
  `groupdeals_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `product_id` int(10) NOT NULL,
  `merchant_id` int(11) NOT NULL,
  `minimum_qty` int(11) NOT NULL,
  `maximum_qty` int(11) NOT NULL,
  `target_met_email` int(11) NOT NULL,
  `coupon_barcode` text NOT NULL,
  `coupon_merchant_address` int(11) NOT NULL,
  `coupon_merchant_contact` int(11) NOT NULL,
  `coupon_expiration_date` date DEFAULT NULL,
  `coupon_price` int(11) NOT NULL,
  `coupon_fine_print` int(11) NOT NULL,
  `coupon_highlights` int(11) NOT NULL,
  `coupon_merchant_description` int(11) NOT NULL,
  `coupon_business_hours` int(11) NOT NULL,
  `coupon_merchant_logo` int(11) NOT NULL,
  `coupon_additional_info` text NOT NULL,
  `position` int(11) NOT NULL,
  PRIMARY KEY (`groupdeals_id`),  
  KEY `groupdeals_id` (`groupdeals_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

我尝试通过执行以下查询来添加外键:

ALTER TABLE `groupdeals_coupons` 
ADD CONSTRAINT `fk_groupdeals_coupons_groupdeals1`
  FOREIGN KEY (`groupdeals_id`)
  REFERENCES `groupdeals` (`groupdeals_id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;
我收到的只是一个错误:

#1215 - Cannot add foreign key constraint
显示引擎innodb状态

------------------------
LATEST FOREIGN KEY ERROR
------------------------
2013-08-17 13:47:49 7ff5dbb2c700 Error in foreign key constraint of table xxxxx/#sql-7b23_282b1a:

 FOREIGN KEY (`groupdeals_id`)
 REFERENCES `groupdeals` (`groupdeals_id`)
 ON DELETE CASCADE
 ON UPDATE CASCADE:
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
Note that the internal storage type of ENUM and SET changed in
tables created with >= InnoDB-4.1.12, and such columns in old tables
cannot be referenced by such columns in new tables.
See http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html
for correct foreign key definition.
groupdeals.groupdeals\u id列是一个主要列,所以我真的不明白哪里有问题:|

有什么提示吗

服务器类型:Percona服务器
服务器版本:5.6.11-rc60.3-log-Percona服务器(GPL),版本60.3

尝试以下两个步骤添加外键:-

  • alter table groupdeals\u优惠券modify groupdeals\u id int unsigned not null默认值0

  • ALTER TABLE groupdeals\u优惠券添加约束fk\u groupdeals\u优惠券\u groupdeals1外键(groupdeals\u id)引用groupdeals(groupdeals\u id)


  • 请尝试以下两个步骤添加外键:-

  • alter table groupdeals\u优惠券modify groupdeals\u id int unsigned not null默认值0

  • ALTER TABLE groupdeals\u优惠券添加约束fk\u groupdeals\u优惠券\u groupdeals1外键(groupdeals\u id)引用groupdeals(groupdeals\u id)


  • 您的类型不一致:

    CREATE TABLE IF NOT EXISTS `groupdeals` (
      `groupdeals_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    
    CREATE TABLE IF NOT EXISTS `groupdeals_coupons` (
      [...]
      `groupdeals_id` int(11) NOT NULL,
    
    正如您将看到的,在一个表中有
    int unsigned
    。在另一种情况下,只需
    int


    顺便说一句,我注意到你在
    groupdeals\u id
    上有两个键。那是故意的吗

    CREATE TABLE IF NOT EXISTS `groupdeals` (
      [...]
      PRIMARY KEY (`groupdeals_id`),  
      KEY `groupdeals_id` (`groupdeals_id`)
    

    您的类型不一致:

    CREATE TABLE IF NOT EXISTS `groupdeals` (
      `groupdeals_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    
    CREATE TABLE IF NOT EXISTS `groupdeals_coupons` (
      [...]
      `groupdeals_id` int(11) NOT NULL,
    
    正如您将看到的,在一个表中有
    int unsigned
    。在另一种情况下,只需
    int


    顺便说一句,我注意到你在
    groupdeals\u id
    上有两个键。那是故意的吗

    CREATE TABLE IF NOT EXISTS `groupdeals` (
      [...]
      PRIMARY KEY (`groupdeals_id`),  
      KEY `groupdeals_id` (`groupdeals_id`)
    

    提问者的表格
    groupdeals\u优惠券
    实际上已经有一列
    groupdeals\u id
    。我想你的意思是
    modify
    change
    而不是
    add
    。没错,即使尝试创建groupdeals\u id 2(只是为了检查是否是未签名的原因),我仍然收到错误提问者的表
    groupdeals\u优惠券
    实际上已经有一列
    groupdeals\u id
    。我想你的意思是
    modify
    change
    而不是
    add
    。没错,即使尝试创建groupdeals\u id2(只是为了检查是否可能是未签名的原因),我仍然收到错误事实上这是未签名的问题,错过了那个问题。谢谢。事实上,这是一个未签名的问题,错过了那一个。谢谢