MySQL LIST Partitioning 问题求解/吐槽
背景:MySQL在使用列表分区时,想申明一个默认分区键的分区表,不能创建成功,具体如下
CREATE TABLE aa (
c1 INT NOT NULL,
c2 VARCHAR(20),
c3 INT NOT NULL,
c4 VARCHAR(20)
)
PARTITION BY LIST(c1) (
PARTITION p_1 VALUES IN (1,2,3),
PARTITION p_default VALUES in (DEFAULT) -- 错误写法
);
想要达到的目的是新增数据c1
在非(1,2,3) 的情况下也能将数据存在p_default
,官方文档如下
Unlike the case with RANGE partitioning, there is no “catch-all” such as MAXVALUE; all expected values for the partitioning expression should be covered in PARTITION … VALUES IN (…) clauses. An INSERT statement containing an unmatched partitioning column value fails with an error.
暂时没有发现MySQL能够解决这个问题的方案,如果MySQL没有解决上述情况,LIST Partitioning
就没那么好用…
使用过PostgreSQL,感觉pgsql这一块做的就比较好,声明式分区
CREATE TABLE aa (
c1 INT NOT NULL,
c2 VARCHAR(20),
c3 INT NOT NULL,
c4 VARCHAR(20)
) PARTITION BY LIST (c1);
CREATE TABLE p_1 PARTITION OF aa FOR VALUES IN (1,2,3);
CREATE TABLE p_default PARTITION OF aa default;
INSERT INTO aa (c1,c2,c3,c4)
VALUES(1,'2',3,'4'),
(2,'3',4,'5'),
(3,'4',5,'6'),
(4,'5',6,'7');
大家在使用数据库时会遇到什么样的奇怪的问题呢,可以在评论区讨论一下。
最近一段时间或者工作使用什么关系型数据库比较多呢