2011-12-31 32 views
0

我试图通过改变表用下面的代码做表分区的MySQL: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::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE tt ADD PARTITION (PARTITION p0 VALUES IN' at line 2:

可有人请让我语法有什么问题?

+0

该声明几乎与你的问题。 – 2011-12-31 20:59:30

+0

尝试这个:http://dev.mysql.com/doc/refman/5.1/en/partitioning-management-range-list.html – PresleyDias 2011-12-31 21:01:50

回答

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 
+0

有或没​​有ADD,它仍然给我错误。我的MySQL版本是: mysql Ver 14.12 Distrib 5.0.75,for apple-darwin10.8.0(i686)使用EditLine包装 – user1040876 2011-12-31 21:05:47

+0

你是什么意思的“错误”?完全相同的错误,还是别的? – Mat 2011-12-31 21:06:32

+0

同样的错误。 Mysql ::错误:你的SQL语法 – user1040876 2011-12-31 21:08:36