MySQL改变了表分区语法

时间:2011-12-31 20:50:44

标签: mysql partitioning

我试图通过使用以下代码更改表来在MySQL中进行表分区:

ALTER TABLE tt DROP PRIMARY KEY, ADD PRIMARY KEY(id, st);
ALTER TABLE tt ADD PARTITION BY LIST(st) (
    PARTITION p0 VALUES IN (20,10),
    PARTITION p1 VALUES IN (0,-10)
);

但出现以下错误:

  

Mysql ::错误:您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在'ALTER TABLE tt ADD PARTITION附近使用正确的语法(第2行中的PARTITION p0 VALUES IN:

有人可以告诉我语法有什么问题吗?

1 个答案:

答案 0 :(得分:2)

ALTER TABLE orders PARTITION BY LIST(st) (
          PARTITION p0 VALUES IN (20,10),
          PARTITION p1 VALUES IN (0,-10)
);

ADD是无关紧要的 - 语法与CREATE TABLE语句基本相同。

在执行此操作之前,请确保您拥有良好的可恢复备份。

日志:

mysql> create table orders (id int, st int, whatever varchar(10), primary key (id));
Query OK, 0 rows affected (0.06 sec)

mysql> ALTER TABLE orders DROP PRIMARY KEY, ADD PRIMARY KEY(id, st);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE orders PARTITION BY LIST(st) (
    ->           PARTITION p0 VALUES IN (20,10),
    ->           PARTITION p1 VALUES IN (0,-10)
    -> );
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0