无法在mysql上分区表

时间:2017-08-30 13:59:44

标签: mysql foreign-keys database-partitioning

当我在innodb表上运行alter table进行分区时,我在Mysql 5.7上遇到了这个错误:

Foreign keys are not yet supported in conjunction with partitioning

知道我已经drop foreign key了这个表,drop foreign key这个表的id是。

现在是我的表架构:

| record | CREATE TABLE `record` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `altitude` smallint(6) DEFAULT NULL,
  `counter` double DEFAULT NULL,
  `datetime` datetime NOT NULL,
  `details` longtext,
  `deviation` smallint(6) DEFAULT NULL,
  `engine` tinyint(1) DEFAULT NULL,
  `event` smallint(6) DEFAULT NULL,
  `fuel_level` double DEFAULT NULL,
  `gsm_level` int(11) DEFAULT NULL,
  `latitude` double NOT NULL,
  `longitude` double NOT NULL,
  `satellite` smallint(6) DEFAULT NULL,
  `speed` smallint(6) DEFAULT NULL,
  `time` time NOT NULL,
  `treated` tinyint(1) NOT NULL DEFAULT '0',
  `id_driver` bigint(20) DEFAULT NULL,
  `id_vehicle_device` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_ai9y9d52lx1xvtaiv3w0x60a5` (`id_driver`),
  KEY `FK_ilwlg0mt87bxyemx4tov1elni` (`id_vehicle_device`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

2 个答案:

答案 0 :(得分:2)

来自Restrictions and Limitations on Partitioning

  

分区的InnoDB表不支持外键。使用InnoDB存储引擎的分区表不支持外键。更具体地说,这意味着以下两个语句都是正确的:

     
      
  • 使用用户定义分区的InnoDB表的定义可能不包含外键引用;没有InnoDB表,其定义包含外键引用,可以进行分区。

  •   
  • 没有InnoDB表定义可能包含对用户分区表的外键引用;没有带有用户定义分区的InnoDB表可能包含外键引用的列。

  •   

答案 1 :(得分:-1)

这意味着没有用户分区的 InnoDB 表可能包含外键引用或外键引用的列