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
解决方案
我没有 5.6,但在 5.7 中,alter 表的正确语法是
更改表 now_articles PARTITION BY HASH(month(publishedat)) PARTITIONS 12;
但是当你运行它时,你会得到两个错误
ERROR 1503 (HY000): PRIMARY KEY 必须包含表分区函数中的所有列 ERROR 1503 (HY000): UNIQUE INDEX 必须包含表分区函数中的所有列
这意味着您必须修改您的主键和唯一键以包含 publishat。
推荐阅读
- c# - C# - 消费者也生产工作的多线程生产者-消费者模式
- validation - APEX 19.2 - 在动态操作之前运行验证
- haskell - 可以递归做脱糖吗
- android - Android水平导向LinearLayout - 如何知道有多少TextViews适合?
- java - 使用 apache httpClient 4.5.x 检索 Content-Length
- javascript - 如果 URL 在浏览器(客户端)上包含视频(但不是音频)或音频(但不是视频),如何使用 javascript 检查?
- doctrine-orm - Symfony 4 OneToOne 关系未从数据库中提取
- c# - 在 C# 中获取 lambda 输入
- javascript - ReactJs 结合键和值
- excel - 如何将公式中的所有结果作为单元格中的列表输出(需要将其应用到列中)