广告
返回顶部
首页 > 资讯 > 数据库 >如何解决mysql添加分区出错的问题
  • 162
分享到

如何解决mysql添加分区出错的问题

2024-04-02 19:04:59 162人浏览 薄情痞子
摘要

这篇文章主要介绍如何解决Mysql添加分区出错的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql添加分区出错,报“1503”错误的原因:每一个分区表中的公式中的列,必须在

这篇文章主要介绍如何解决Mysql添加分区出错的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

如果分区字段没有包含在主键字段内,如表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 have.

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:

顺应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添加分区出错的问题的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何解决mysql添加分区出错的问题

本文链接: https://www.lsjlt.com/news/52869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决mysql添加分区出错的问题
    这篇文章主要介绍如何解决mysql添加分区出错的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql添加分区出错,报“1503”错误的原因:每一个分区表中的公式中的列,必须在...
    99+
    2022-10-18
  • 如何解决php加密后出错的问题
    这篇文章主要介绍如何解决php加密后出错的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php加密后出错的解决办法:1、修改内容为“$where .= " AND o.order_status...
    99+
    2023-06-22
  • 如何解决mysql出现10055错误问题
    这篇文章主要介绍如何解决mysql出现10055错误问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql出现10055错误的解决办法:首先查一下netstat有多少连接和等待...
    99+
    2022-10-18
  • 解决mysql出现1290错误的问题
    解决mysql出现1290错误的问题?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql 出现1290错误的解决办法:...
    99+
    2022-10-18
  • 解决MYSQL创建函数出错的问题
    小编给大家分享一下解决MYSQL创建函数出错的问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!例一:目前在项目中,执行创建mysql的函数出错,mysql 创建函数出错信息如下:Error ...
    99+
    2022-10-18
  • 解决MySQL添加新用户-ERROR 1045 (28000)的问题
    MySQL添加新用户,见文章底部。 按照正常思维,创建用户和设置密码什么的,应该是一个动作完成的。然而事实并非如此。 我每次都是通过在网上找代码来创建MySQL的用户。如果无效,就再...
    99+
    2022-11-13
  • 如何解决php fpm出错问题
    本文操作环境:linux5.9.8系统、PHP5.5版、Dell G3电脑。如何解决php fpm出错问题?nginx调用php-fpm出错解决方法和nginx配置详解这篇文章介绍了nginx调用php-fpm出错的解决方法,最后给出了ng...
    99+
    2014-09-15
    php fpm
  • 如何解决apache2.4 php5.6出错问题
    本文操作环境:windows7系统、PHP5.6版、DELL G3电脑Apache2.4+PHP5.6配置教程和问题Apache服务无法启动以及php配置文件不生效等的解决 初学php时用的是Apache2.2+php5.4+mysq...
    99+
    2014-10-28
    Apache2.4 PHP5.6
  • MySQL字符集出错的问题怎么解决
    本篇内容主要讲解“MySQL字符集出错的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL字符集出错的问题怎么解决”吧!  实例讲解...
    99+
    2022-10-18
  • IDEA手动添加junit4时出现的问题与解决方法
    当我写@Test注解时,一直报错   后来百度是缺少junit4的包 手动添加junit4包 具体查看是在左上角 file–>project structure 点击...
    99+
    2022-11-11
  • 如何解决php 签名出错问题
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑如何解决php 签名出错问题问题描述:我正在使用 TCPDF 生成一个 pdf 文档并对其进行签名.TCPDF 本身只是调用 PHP 的 openssl_pkcs7_si...
    99+
    2021-10-30
    php 签名
  • 如何解决mysql 2003错误问题
    这篇文章给大家介绍如何解决mysql 2003错误问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。mysql 2003错误的解决办法:1、在“计算机”->“管理”->“服...
    99+
    2022-10-19
  • 如何解决mysql 1146错误问题
    本篇内容主要讲解“如何解决mysql 1146错误问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决mysql 1146错误问题”吧!mysql 114...
    99+
    2022-10-19
  • 如何解决mysql 1053错误问题
    这篇文章将为大家详细讲解有关如何解决mysql 1053错误问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 mysql 1053错误的解决...
    99+
    2022-10-19
  • 如何解决mongoDB数据库添加账号的问题
    这篇文章主要介绍了如何解决mongoDB数据库添加账号的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 以管理员运行powershell2. mongo 连接服务器 ...
    99+
    2023-06-29
  • 如何解决navicat出现1075错误的问题
    这篇文章主要介绍如何解决navicat出现1075错误的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MYSQL中AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数...
    99+
    2022-10-18
  • 如何解决navicat出现1366错误的问题
    这篇文章给大家分享的是有关如何解决navicat出现1366错误的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  navicat在创建表的时候有时会报错。 warning(...
    99+
    2022-10-18
  • 如何解决phpmyadmin出现405错误的问题
    小编给大家分享一下如何解决phpmyadmin出现405错误的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!phpmyadm...
    99+
    2022-10-18
  • 如何解决phpmyadmin出现2003错误的问题
    这篇文章给大家分享的是有关如何解决phpmyadmin出现2003错误的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。phpmyadmin出现2003错误,服务器没有响应的解...
    99+
    2022-10-18
  • 如何解决mysql深分页问题
    今天小编给大家分享一下如何解决mysql深分页问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作