[英]MySQL alter table partition by range - Error Code: 1503. A PRIMARY KEY must include all columns in the table's partitioning function
[英]MySQL: Alter table to create partition giving primary key error
我需要使用LIST COLUMNS分區對MySQL表進行分區。 我已經有了包含數據的表,因此我需要更改表以創建分區。
這是我在做什么。
示例架構:
CREATE TABLE mytable (
id bigint(20) primary key auto_increment,
.....
status varchar(10)
);
更改我正在使用的表腳本:
ALTER TABLE mytable PARTITION BY LIST COLUMNS (status)
(
PARTITION p1 VALUES IN (NULL),
PARTITION p2 VALUES IN ('SUCCESS'),
PARTITION p3 VALUES IN ('FAILED')
);
錯誤:PRIMARY KEY必須在表的分區功能中包含所有列
但是,當我嘗試創建一個沒有id列的表時,如下所示:
CREATE TABLE mytable (
status varchar(10)
);
然后嘗試使用與上面相同的alter腳本創建分區,它起作用了。 那么,我是否在桌子上沒有ID的東西?
SQLFiddle:
工作: http : //sqlfiddle.com/#!9 / c8a3d1
無法正常使用: http : //sqlfiddle.com/#!9 / d06a1
好吧,我想我找到了解決方案。 我必須更改主鍵。 主鍵應同時包含id和status列,以便根據狀態進行分區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.