mysql添加分区出错,报“1503”错误的原因:每一个分区表中的公式中的列,必须在主键“unique key”中包括,否则就报错;解决方法:先使用“PRIMARY KEY”关键字创建一个复合主键,将分区字段加入到主键中,再进行分区操作。

(推荐教程:mysql视频教程)
如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按时间范围分区,代码如下:
CREATE TABLE T1 (
id int(8) NOT NULL AUTO_INCREMENT,
createtime datetime NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(TO_DAYS (createtime))
(
PARTITION p0 VALUES LESS THAN (TO_DAYS('2010-04-15')),
PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-05-01')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-05-15')),
PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-05-31')),
PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-06-15')),
PARTITION p19 VALUES LESS ThAN MAXVALUE);错误提示:#1503
A PRIMARY KEY MUST INCLUDE ALL COLUMNS IN THE TABLE'S PARTITIONING FUNCTION
MySQL主键的限制,每一个分区表中的公式中的列,必须在主键“unique key”中包括
在MYSQL的官方文档里是这么说明的
18.5.1. Partitioning Keys, Primary Keys, and Unique Keys
This section discusses the relationship of partitioning keys with primary keys and unique keys. The rule governing this relationship can be expressed as follows: All columns used in the partitioning expression for a partitioned table must be part of every unique key that the table may h*e.
In other words,every unique key on the table must use every columnin the table's partitioning expression. (This also includes the table's primary key, since it is by definition a unique key. This particular case is discussed later in this section.) For example, each of the following table creation statements is invalid:
分区字段必须包含在主键字段内,至于为什么MYSQL会这样考虑,CSDN的斑竹是这么解释的:
为了确保主键的效率。否则同一主键区的东西一个在A分区,一个在B分区,显然会比较麻烦。 copyright
下面讨论解决办法,毕竟在一张表里,日期做主键的还是不常见。
方法1:
SONIFY.io
设计和开发音频优先的产品和数据驱动的解决方案
83
查看详情
顺应MYSQL的要求,就把分区字段加入到主键中,组成复合主键
CREATE TABLE T1 (
id int(8) NOT NULL AUTO_INCREMENT,
createtime datetime NOT NULL,
PRIMARY KEY (id,createtime)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(TO_DAYS (createtime))
(
PARTITION p0 VALUES LESS THAN (TO_DAYS('2010-04-15')),
PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-05-01')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-05-15')),
PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-05-31')),
PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-06-15')),
PARTITION p19 VALUES LESS ThAN MAXVALUE);测试通过,分区成功。
方法2:
既然MYSQL要把分区字段包含在主键内才能创建分区,那么在创建表的时候,先不指定主键字段,是否可以呢??
测试如下:
CREATE TABLE T1 (
id int(8) NOT NULL ,
createtime datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(TO_DAYS (createtime))
(
PARTITION p0 VALUES LESS THAN (TO_DAYS('2010-04-15')),
PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-05-01')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-05-15')),
PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-05-31')),
PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-06-15')),
PARTITION p19 VALUES LESS ThAN MAXVALUE);测试通过,分区成功。OK copyright
继续添加上主键
alter table t1 add PRIMARY KEY(ID)
错误1503,和前面一样的错误。
alter table t1 add PRIMARY KEY(ID,createtime)
创建主键成功,但还是复合主键,看来是没办法了,必须听指挥了。
主键创建成功,把ID加上自增字段设置
alter table t1 change id id int not null auto_increment; alter table t1 auto_increment=1;
最后结论,MYSQL的分区字段,必须包含在主键字段内。
以上就是mysql添加分区出错怎么办?的详细内容,更多请关注其它相关文章!
# 分区
# 主键
# 镜像
# 分区表
# 如何设置
# 要把
# 没办法
# 相关文章
# mysql
# 灞桥电厂网站建设
# 美食抖音seo
# seo文章标题规范范文
# 先黑seo
# 企业营销推广管理系统
# 中堂服装网站推广的软件
# 定襄网站推广
# 娄烦口碑好关键词排名
# 抖音新品营销推广方案
# 太原星河湾营销推广方案
# 解决问题
# 中文网
# 就把
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析
AO3永久镜像入口开放_AO3最新网址兼容所有浏览器
中通快递官网指定查询 中通快递单号查询平台入口
使用jQuery精确检测除指定元素外任意位置的点击事件
2025SNH48年度青春盛典门票价格及购买方式
海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接
《下一站江湖2》武器获取方法
VS Code的时间线(Timeline)视图:您的代码时光机
c++类和对象到底是什么_c++面向对象编程基础
解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用
《金山词霸》语音翻译方法
《土豆雅思》修改密码方法
iPhone14无法连接蓝牙设备如何解决
支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法
mysql如何管理数据库账户_mysql数据库账户管理技巧
在Django单元测试中优雅处理信号:基于环境的条件执行策略
抖音号怎么解除企业认证改成个人?改成个人有影响吗?
《广发易淘金》国债逆回购操作教程
快递优选如何查优选物流_快递优选专属物流渠道查询与配送时效
J*a里如何处理ArithmeticException并防止除零_算术异常防护策略解析
泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口
OpenWeatherMap API:通过城市名称获取天气预报数据指南
使用document.execCommand实现Web文本编辑器加粗/取消加粗
win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】
一点万象签到领积分指南
126手机126邮箱登录_126邮箱手机登录入口官网
优化Asyncio嵌套函数调度:使用生产者-消费者模式实现并发流处理
Golang如何操作指针参数_Go pointer参数传递规则
招商淘客入门指南
C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏
酷狗音乐多音轨设置教程
顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南
msn官方入口2025登录 msn官网2025直达首页入口
如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践
ToDesk远程摄像头功能使用方法_ToDesk远程视频画面查看设置教程
PHP中实现JSON数据数组分页的教程
天堂漫画网页版在线阅读 天堂漫画手机版入口
ao3入口镜像地址 ao3镜像入口可靠跳转
解决Go encoding/json 将JSON大数字解析为浮点数的问题
GBA模拟器手柄按键设置
解决jQuery多计算器输入字段冲突的教程
《淘票票》添加到苹果钱包教程
《桃源记2》资源采集攻略
稻壳阅读器官方直达网址链接 稻壳阅读器文档阅读平台主页资源入口
QQ网页版入口导航 QQ网页版在线访问通道
《友玩*》创建群聊方法
韩小圈网页版PC端入口 韩小圈网页版官方网站入口
CSS布局中意外顶部空白的调试与解决:深入理解padding-top
Go语言中方法接收器的选择:值类型还是指针类型?
word邮件合并怎么插入个性化图片_Word邮件合并插入个性化图片方法
2020-10-20
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。