2

我有两张桌子和款式,即

如果不存在 `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;

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

更改表`样式`
  添加约束 `style_ibfk_1` 外键 (`jewelry_id`) 参考 `ring` (`jewelry_id`) ON DELETE CASCADE ON UPDATE CASCADE;

错误是

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

3 回答 3

3

MyISAM 表不支持外键。制作两个表 InnoDB。

于 2011-01-21T05:18:12.573 回答
0

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

于 2011-01-21T05:27:55.177 回答
0

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

于 2022-01-08T20:38:41.253 回答