如何在给定的表结构中创建月份分区

时间:2018-06-13 06:47:14

标签: mysql

如何创建月分区

CREATE TABLE `now_articles` (
  `articleId` bigint(19) NOT NULL AUTO_INCREMENT,
  `author` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL DEFAULT '',
  `title_md5` varchar(35) NOT NULL,
  `description` longtext NOT NULL,
  `url` varchar(255) NOT NULL,
  `urltoImage` varchar(255) NOT NULL,
  `publishedAt` datetime NOT NULL,
  `source` varchar(255) NOT NULL,
  `sub_source_name` varchar(255) NOT NULL,
  `categories` varchar(255) NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `keywords` varchar(255) NOT NULL,
  `categoryOrder` enum('0','1','-1') DEFAULT '0',
  `homeOrder` enum('0','1','-1') DEFAULT '0',
  PRIMARY KEY (`articleId`),
  UNIQUE KEY `title_md5` (`title_md5`),
  KEY `categories` (`categories`),
  KEY `source` (`source`),
  KEY `publishedAt` (`publishedAt`)
) ENGINE=MyISAM 

2 个答案:

答案 0 :(得分:0)

我没有5.6,但在5.7中,alter table的正确语法是

alter table now_articles 分段哈希(月(发表))     PARTITIONS 12;

但是当你运行它时会出现两个错误

ERROR 1503(HY000):PRIMARY KEY必须包含表格分区功能中的所有列 ERROR 1503(HY000):唯一索引必须包含表格分区功能中的所有列

这意味着您必须修改主要和唯一键以包含publishedat。

答案 1 :(得分:0)

您可以每个月使用任何脚本语言PHP或Python通过con job重命名表。

之后创建具有给定结构的相同表。 我希望它可以帮助你。