Mysql 创建分区时显示错误

Mysql 创建分区时显示错误,mysql,Mysql,错误代码:1697 分区“Jan2017”的值必须具有INT类型 我们需要做一些改变: 我们需要使用partitionbylistcolumns短语,而不是partitionbycolumns 分区列需要是表键(文档)的一部分,因此我们需要将期间添加到主键 以下内容应该有效: CREATE TABLE `cloud_ip_cost_details1` ( `ipcost_details_id` INT(11) NOT NULL AUTO_INCREMENT, `server_en

错误代码:1697

分区“Jan2017”的值必须具有INT类型


我们需要做一些改变:

  • 我们需要使用
    partitionbylistcolumns
    短语,而不是
    partitionbycolumns
  • 分区列需要是表键(文档)的一部分,因此我们需要将
    期间
    添加到
    主键
以下内容应该有效:

CREATE TABLE `cloud_ip_cost_details1` (

  `ipcost_details_id` INT(11) NOT NULL AUTO_INCREMENT,

  `server_entry_id` INT(11) DEFAULT NULL,

  `ip_address` BLOB,

  `project_name` VARCHAR(500) DEFAULT NULL,

  `project_id` INT(11) DEFAULT NULL,

  `group_id` INT(11) DEFAULT NULL,

  `division_id` INT(11) DEFAULT NULL,

  `cost` BLOB,

  `period` VARCHAR(50) DEFAULT NULL,

  `updated_by` VARCHAR(20) DEFAULT NULL,

  `temp_id` BIGINT(20) DEFAULT NULL,

  PRIMARY KEY (`ipcost_details_id`)

)

PARTITION BY LIST(period)(


    PARTITION Jan2017 VALUES IN ('Jan-2017')
);
以下是

尝试以下方法:

CREATE TABLE `cloud_ip_cost_details1` (

  `ipcost_details_id` INT(11) NOT NULL AUTO_INCREMENT,
  `server_entry_id` INT(11) DEFAULT NULL,
  `ip_address` BLOB,
  `project_name` VARCHAR(500) DEFAULT NULL,
  `project_id` INT(11) DEFAULT NULL,
  `group_id` INT(11) DEFAULT NULL,
  `division_id` INT(11) DEFAULT NULL,
  `cost` BLOB,
  `period` VARCHAR(50) DEFAULT NULL,
  `updated_by` VARCHAR(20) DEFAULT NULL,
  `temp_id` BIGINT(20) DEFAULT NULL,

  PRIMARY KEY (`ipcost_details_id`, `period`)

)

PARTITION BY LIST COLUMNS(period)(
    PARTITION Jan2017 VALUES IN ('Jan-2017')
);
或者这个:

PARTITION BY LIST COLUMNS(period) (
    PARTITION Jan2017 VALUES IN('Jan-2017')
);

文档:

错误信息似乎非常清楚。您不明白什么?可以在分区中使用char创建。当分区Jan2017的值在(2017)中时,它将接受而不是2017,当添加列表列时,它将显示错误。错误代码:1503主键必须包含表分区中的所有列function@sridhard我已经更新了我的答案。你能再试一次吗?
 PARTITION BY RANGE (period)
    ( PARTITION Jan2017 VALUES LESS THAN (TO_DAYS('2012-07-01')) 
 );