【问题标题】:foreign key constraint error外键约束错误
【发布时间】:2011-06-12 22:36:37
【问题描述】:

我有两个表环和样式,即

如果不存在则创建表 `ring` (
  `jewelry_id` int(11) NOT NULL auto_increment,
  `ring_id` varchar(50) NOT NULL,
  `gender` varchar(10) NOT NULL,
  `description` 文本不为空,
  `image` varchar(100) NOT NULL,
  `type` 文本不为空,
  主键(`jewelry_id`)
) 引擎=MyISAM 默认字符集=latin1 AUTO_INCREMENT=1;

样式表是

如果不存在 `style` 则创建表 (
  `style_id` int(11) NOT NULL AUTO_INCREMENT,
  `style` 文本不为空,
  `jewelry_id` int(11) NOT NULL,
  主键(`style_id`),
  KEY `jewelry_id` (`jewelry_id`)
) 引擎=InnoDB 默认字符集=latin1 AUTO_INCREMENT=1;

当我向样式表添加外键时,它给了我错误,即

ALTER TABLE `style`
  添加约束 `style_ibfk_1` 外键 (`jewelry_id`) 参考 `ring` (`jewelry_id`) ON DELETE CASCADE ON UPDATE CASCADE;

错误是

#1005 - 无法创建表 './j_jewelry/#sql-2c3b_750.frm' (errno: 150) (详情...)

【问题讨论】:

  • +1 来自新用户的格式正确的问题。欢迎来到 SO。

标签: mysql mysql-error-1005


【解决方案1】:

MyISAM 表不支持外键。将两个表都设为 InnoDB。

【讨论】:

  • 他正在将约束添加到 InnoDB 样式表中。
  • @Dan:两个表都需要是 InnoDB。
【解决方案2】:

对于引用表类型的外键应该是INNODB

【讨论】:

    【解决方案3】:

    InnoDB 具有行级锁定。 MyISAM 只有完整的表级锁定。因此,InnoDB 支持引用完整性,因此支持外键和其他关系约束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-15
      • 2023-03-13
      • 2015-04-03
      • 2018-02-19
      • 2018-02-15
      • 2022-07-21
      • 2022-12-21
      相关资源
      最近更新 更多