De_arning 2024-09-26 17:33 采纳率: 53.8%
浏览 3

mysql 为什么主键删除,分区还在?

mysql 为什么主键删除,分区还在?
根据主键的asin 创建了分区, 然后删除了主键,分区没有删除,gpt是这样说的
https://poe.com/s/J3H4HssKOHmvJ0bIfS01

img

img

-- db_junglescout_amazon.tb_sales_estimates_weekly_v2 definition

CREATE TABLE `tb_sales_estimates_weekly_v2` (
  `created_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `marketplace` varchar(5) NOT NULL,
  `root_category_id` bigint NOT NULL,
  `year` int NOT NULL,
  `week` varchar(3) NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `asin` varchar(40) NOT NULL,
  `is_available` int DEFAULT NULL,
  `category_rank` bigint DEFAULT NULL,
  `subcategory_rank` bigint DEFAULT NULL,
  `brand` varchar(1000) DEFAULT NULL,
  `name` varchar(1000) DEFAULT NULL,
  `image_url` varchar(1000) DEFAULT NULL,
  `price` decimal(10,2) DEFAULT NULL,
  `review_count` bigint DEFAULT NULL,
  `ratings` decimal(3,1) DEFAULT NULL,
  `breadcrumb_path_category_ids` varchar(1000) DEFAULT NULL,
  `ranking_category_ids` varchar(1000) DEFAULT NULL,
  `first_date_available` datetime DEFAULT NULL,
  `revenue` decimal(20,2) DEFAULT NULL,
  `revenue_1p` decimal(20,2) DEFAULT NULL,
  `revenue_3p` decimal(20,2) DEFAULT NULL,
  `sales` decimal(20,2) DEFAULT NULL,
  `sales_1p` decimal(20,2) DEFAULT NULL,
  `sales_3p` decimal(20,2) DEFAULT NULL,
  `seller_ids` varchar(1000) DEFAULT NULL,
  `seller_id_mode` varchar(1000) DEFAULT NULL,
  `seller_types` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY KEY (asin)
PARTITIONS 1024 */;
  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-26 17:34
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在MySQL中,当您删除一个包含主键的表的主键时,分区(partitions)可能不会自动被删除。这是因为分区通常是通过主键或其他特定条件创建的。

    要解决这个问题,您可以考虑以下几种方式:

    1. 手动创建新的分区:如果您知道哪些分区应该保留,可以手工创建新的分区。这通常涉及修改ALTER TABLE语句以指定新分区的大小、起始行数等参数。例如,您可以使用以下SQL命令来创建一个新的分区:

      ALTER TABLE tb_sales_estimates_weekly_v2 ADD PARTITION (asin = 'your_asin') VALUES LESS THAN ('your_last_partition_value');
      

      这将为您的ASIN分配一个新的分区,其中your_asin是您的ASIN值,your_last_partition_value是上一次分区结束的位置。

    2. 使用数据库引擎特性:某些数据库引擎,如MyISAM,支持在删除主键的同时保持分区完整性。在这种情况下,分区会自动更新到新的主键范围之外。然而,对于其他类型的数据库引擎,比如InnoDB,这种方法不总是适用。

    3. 确保备份:在进行任何更改之前,务必对数据库执行完整的备份。这样即使出现问题,也可以恢复到之前的版本。

    请注意,在操作过程中可能会遇到一些问题,因为MySQL的分区机制并不是非常灵活且容易调整。因此,建议在实际操作前先进行充分的测试和验证。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月26日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?