2017-10-28 80 views
0

我试图在MySQL集群中创建表。但在执行下面的查询时发生错误。在mysql集群中创建表时出错

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集群中不起作用。

+2

错误似乎很明显。 –

+0

我已经将ENGINE作为ENGINE = ndbcluster而不是ENGINE = InnoDB – lfreez

回答

0

从文档中删除: ON UPDATE当引用父表的主键时,不支持CASCADE。

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