在mysql集群中创建表时出错

Posted

技术标签:

【中文标题】在mysql集群中创建表时出错【英文标题】:Error while creating a table in mysql cluster 【发布时间】:2017-10-28 12:11:48 【问题描述】:

我正在尝试在 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 集群中不起作用。

【问题讨论】:

错误似乎很明显。 我已将 ENGINE 更改为 ENGINE=ndbcluster 而不是 ENGINE=InnoDB 【参考方案1】:

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

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

【讨论】:

以上是关于在mysql集群中创建表时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 sqlite3 中创建表时出错

在 postgres 8.1 中创建表时出错

在 mySQL phpMyAdmin 中创建表后如何查看 Create Table SQL 命令

MYSQL数据库建表出错!!!

MYSQL数据库建表出错

设置mysql集群时出错