mysql分区唯一索引_[项目踩坑] MySQL 分区:分区键和唯一索引主键的关系,解决报错 A PRIMARY KEY...
场景
【项目踩坑】Mysql分区:分区键和唯一索引主键的关系,解决报错 A PRIMARY KEY must include all columns in the table’s partitioning
今天在建立mysql 分区表,设置主键与索引时候报错
错误:
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table’s partitioning
ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table’s partitioning function
结论
主键必须包括表的分区函数中的所有列,一个惟一的索引必须包括表的分区函数中的所有列,是不是不太好理解意思?分区的key必须是 主键!
那就来看看分析
分析1
其实就是这么个意思:表上的每一个唯一性索引必须用于分区表的表达式上(其中包括主键索引)
下面我来举几个例子:
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
PRIMARY KEY (id)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
[Err] 1503 - A PRIMARY KEY must include all columns in the table’s partitioning function
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
UNIQUE KEY (id)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
[Err] 1503 - A PRIMARY KEY must include all columns in the table’s partitioning function
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
PRIMARY KEY (id,bid)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
Query OK, 0 rows affected (0.535 sec)
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
UNIQUE KEY (id,bid)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
Query OK, 0 rows affected (0.625 sec)
结果1
这一组例子说明了如果要用bid作为分区key,则bid至少要包含在主键或者唯一键。
分析2
再来看一组例子:
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
PRIMARY KEY (id,aid),
UNIQUE KEY (bid)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
[Err] 1503 - A PRIMARY KEY must include all columns in the table’s partitioning function
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
PRIMARY KEY (id,aid),
UNIQUE KEY (bid)
)
PARTITION BY KEY(aid)
PARTITIONS 10;
[Err] 1503 - A PRIMARY KEY must include all columns in the table’s partitioning function
结果2
这2个分区表是无法建立的,因为没有一个分区键,可以同时属于两个唯一性索引的键。
分析3
下面再来看一组例子:
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
PRIMARY KEY (id,aid,bid)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
Query OK, 0 rows affected (0.475 sec)
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
UNIQUE KEY (id,aid,bid)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
Query OK, 0 rows affected (0.532 sec)
SQL
CREATE TABLE t1 (
id INT NOT NULL,
aid DATE NOT NULL,
bid INT NOT NULL,
PRIMARY KEY (id,aid,bid),
UNIQUE KEY (bid)
)
PARTITION BY KEY(bid)
PARTITIONS 10;
Query OK, 0 rows affected (0.526 sec)
结果3
这三个都建立分区表成功了,因为bid同时属于一个或以上的唯一性索引的键
最后
通过上面这些例子,大家可以深入的理解Mysql分区中分区键和唯一索引主键的关系了,
主要是,分区的key必须是 主键!
防爬虫说明
禁止 学习某地爬虫,知乎爬虫,CSDN 爬虫。
本文,首发在 learnku 社区。
本作品采用《CC 协议》,转载必须注明作者和本文链接
感谢关注
上海PHP自学中心-免费编程视频教学|
mysql分区唯一索引_[项目踩坑] MySQL 分区:分区键和唯一索引主键的关系,解决报错 A PRIMARY KEY...相关推荐
- Mysql是国产化么_项目国产化,mysql替换为神通数据库记录
1.背景 项目中mysql数据库要替换成神通数据库:库中的表有部分是内置数据,即项目安装部署后库.表要已经创建完成,并且部分表里要有内置数据,项目启动要能根据实体类动态更新表结构(为了方便升级.运维) ...
- 【踩坑】遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 报错...
今天在重做 iblog 客户端时,测试接口情况,发现了 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- 警惕参数变化,MySQL 8.0 升级避免再次踩坑
MySQL 8.0新特性专栏目录 <MySQL开发规范>过时了,视图查询性能提升了一万倍 你真的会用EXPLAIN么,SQL性能优化王者晋级之路 索引三剑客之降序索引和不可见索引 千呼万唤 ...
- Mysql数据唯一约束与唯一索引案例总结及踩坑记(含NULL值与唯一约束唯一索引的搭配使用)
Mysql数据唯一索引与唯一约束案例总结 唯一约束的说明 唯一约束是约束(CONSTRAINT)里的一种,常见的还有主键.外检.默认值.是否为空.检查等.唯一约束即限制某个或某些字段具有唯一性(不能重 ...
- html2canvas图片的文字偏移,html2canvas在Vue项目踩坑-生成图片偏移不完整
背景 最近做一个Vue项目需求是用户长按保存图片,页面的数据是根据不同id动态生成的,页面渲染完生成内容图片让用户长按保存的时候,把整个页面都保存起来. 在项目遇到的坑是图片能生成,可是生成的图片总是 ...
- java 做项目踩坑,web项目踩坑过程
sql函数设计: 一开始本来是直接用Java的jdbc直接传输操作语句的.但后来学了存储过程发现存储过程可以提高不少的效率.就重构了自己对数据库的操作代码.包括:开启,查找,修改,关闭. 开启:直接使 ...
- 配合Opencv2.4.9,CMake3.12.1和VS2010在win10下构建项目踩坑记录
配合Opencv3,CMake和VS2010在win10下构建项目踩坑记录 参考https://blog.csdn.net/qq_26623659/article/details/78322782 博 ...
- mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...
基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明. ...
- 丰田项目踩坑手记(REACT)
丰田项目踩坑手记(REACT) 路由配置的时候:要引入hash路由不是browswer那个 路由参考网址:react-guide.github.io/react-route- 路由网址:reacttr ...
- mysql的引双向链表_一分钟掌握MySQL的InnoDB引擎B+树索引
MySQL的InnoDB索引结构采用B+树,B+树什么概念呢,二叉树大家都知道,我们都清楚随着叶子结点的不断增加,二叉树的高度不断增加,查找某一个节点耗时就会增加,性能就会不断降低,B+树就是解决这个 ...
最新文章
- 手把手教你代码重构,是时候告别屎一样的代码了!
- 什么是超融合数据中心网络?
- Thymeleaf –片段和angularjs路由器局部视图
- mysql 优化关键字_MySQL 优化之 EXPLAIN 关键字
- c++之对vector排序并获得其索引
- LeetCode-108将有序数组转换为二叉搜索树
- 问答知识图谱还缺少什么信息?
- Python学习之路_day_11(装饰器)
- 数据库与REDIS缓存数据一致性解决方案
- 基于MAE的人脸素描图像属性识别和分类
- 新兴职业背后的认知逻辑
- 国产海洋地球物理设备简述----侧扫声纳
- 2023最近很火的抖音解封技术教程分析+价值1000+
- 2021-2027全球与中国智能办公室系统市场现状及未来发展趋势
- mybatis 中 if-test 判断详解
- 彩信SMIL文件学习
- python+selenium实现UI自动化(一)
- 用计算机弹最简单的歌,计算器也能演奏美妙音乐
- 字节跳动大数据岗位面经(一面、二面、三面、hr面,base南京)
- S7-1200通过Modbus/485通讯INVT变频器(小白篇)