mysql1526错误_mysql 分区 1526错误
參考:https://bugs.mysql.com/bug.php?id=52815
簡而言之就是你建的表分區(qū)最大值不夠用了
如果表有主鍵,那么主鍵必須包含分區(qū)鍵,分區(qū)鍵是主鍵的子集。這個應(yīng)該算是局限了。
這個是正確的
CREATE TABLE IF NOT EXISTS `test_hash_part41` (
`id` int(11) NOT NULL ,
`pid` int(11) NOT NULL ,
`comment` varchar(1000) NOT NULL DEFAULT '' ,
`ip` varchar(25) NOT NULL DEFAULT '' ,
PRIMARY KEY (`id`,pid)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
PARTITION BY KEY(id)
PARTITIONS 3;
下面這個會ERROR 1503(HY000):A PRIMARY KEY must include all columns inthe table's partitioning function
CREATE TABLE IF NOT EXISTS `test_hash_part42` (
`id` int(11) NOT NULL ,
`pid` int(11) NOT NULL ,
`comment` varchar(1000) NOT NULL DEFAULT '' ,
`ip` varchar(25) NOT NULL DEFAULT '' ,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
PARTITION BY KEY(id,pid)
PARTITIONS 3;
分區(qū)的sql語法
partition_options:
PARTITION BY
{ [LINEAR] HASH(expr)
| [LINEAR] KEY(column_list)
| RANGE(expr)
| LIST(expr) }
[PARTITIONS num]
[SUBPARTITION BY
{ [LINEAR] HASH(expr)
| [LINEAR] KEY(column_list) }
[SUBPARTITIONS num]
]
[(partition_definition [, partition_definition] ...)]
partition_definition:
PARTITION partition_name
[VALUES {LESS THAN {(expr) | MAXVALUE} | IN (value_list)}]
[[STORAGE] ENGINE [=] engine_name]
[COMMENT [=] 'comment_text' ]
[DATA DIRECTORY [=] 'data_dir']
[INDEX DIRECTORY [=] 'index_dir']
[MAX_ROWS [=] max_number_of_rows]
[MIN_ROWS [=] min_number_of_rows]
[TABLESPACE [=] tablespace_name]
[NODEGROUP [=] node_group_id]
[(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition:
SUBPARTITION logical_name
[[STORAGE] ENGINE [=] engine_name]
[COMMENT [=] 'comment_text' ]
[DATA DIRECTORY [=] 'data_dir']
[INDEX DIRECTORY [=] 'index_dir']
[MAX_ROWS [=] max_number_of_rows]
[MIN_ROWS [=] min_number_of_rows]
[TABLESPACE [=] tablespace_name]
[NODEGROUP [=] node_group_id]
例子:
創(chuàng)建range分區(qū)
CREATE TABLE `testpartition` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(50) NOT NULL ,
`sex` int(1) NOT NULL DEFAULT '0' ,
PRIMARY KEY (`id`)
) ENGINE=Innodb DEFAULT CHARSET=utf8
PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (3),
PARTITION p1 VALUES LESS THAN (6),
PARTITION p2 VALUES LESS THAN (9),
PARTITION p3 VALUES LESS THAN (12),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
插入數(shù)據(jù)
INSERT INTO testpartition (`name` ,`sex`)VALUES ('jhh', '0')
,('zhang',1),('ying',1),('aaaa',1),('bbbb',0),('test1',1),('jhh2',1)
,('jhh1',1),('test2',1),('test3',1),('test4',1),('test5',1),('jhh3',1)
,('jhh4',1),('jhh5',1),('jhh6',1),('jhh7',1),('jhh8',1),('jhh9',1)
,('jhh10',1),('jhh11',1),('jhh12',1),('jhh13',1),('jhh21',1),('jhh42',1);
可以drop 某個分區(qū)alter table drop partition p4 ;
如果是刪除了最大的分區(qū)p4,導(dǎo)致比較大的數(shù)值沒有相應(yīng)的分區(qū),會報如下類似錯誤的。ERROR1526(HY000):Tablehasnopartitionforvalue.
改變分區(qū),相當(dāng)于重整分區(qū)了。
總結(jié)
以上是生活随笔為你收集整理的mysql1526错误_mysql 分区 1526错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java it_Java中的Iterat
- 下一篇: fileinputstream java