在mysql集群中创建表时出错

时间:2017-10-28 12:11:49

标签: mysql sql

我正在尝试在MySQL Cluster中创建一个表。但在执行以下查询时遇到错误。

CREATE TABLE `tbl_anal_results` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tbl_bill_bill_id` int(10) unsigned NOT NULL,
  `item` varchar(256) NOT NULL,
  `bill_value` decimal(10,2) NOT NULL,
  `calc_value` decimal(10,2) NOT NULL,
  `err` tinyint(1) NOT NULL,
  `error_code` varchar(256) DEFAULT NULL,
  `tbl_bill_info_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_tbl_anal_results_tbl_bill1_idx` (`tbl_bill_bill_id`),
  CONSTRAINT `fk_tbl_anal_results_tbl_bill1` FOREIGN KEY (`tbl_bill_bill_id`) REFERENCES `tbl_bill` (`bill_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=ndbcluster AUTO_INCREMENT=16570225 DEFAULT CHARSET=latin1;
  

ERROR 1215(HY000):无法添加外键约束

我使用过相同的查询,我用它在旧的mysql设置中创建相同的表。 我已将ENGINE更改为ENGINE = ndbcluster而不是ENGINE = InnoDB

还注意到UPDATE CASCADE无法在mysql集群中运行。

1 个答案:

答案 0 :(得分:1)

从文档剪切: 当引用是父表的主键时,不支持ON UPDATE CASCADE。

这是因为更新主键实现为删除旧行(包含旧主键)以及新行的插入(使用新主键)。这对于NDB内核是不可见的,NDB内核将这两行视为相同,因此无法知道此更新应该级联。