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: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «ALTER TABLE tt ADD PARTITION (PARTITION p0 VALUES IN» в строке 2:

Может кто-нибудь, пожалуйста, дайте мне, что не так с синтаксисом?


person user1040876    schedule 31.12.2011    source источник
comment
Это утверждение вряд ли связано с вашим вопросом.   -  person Tom van der Woerdt    schedule 01.01.2012
comment
попробуйте это: dev.mysql.com/doc /refman/5.1/ru/   -  person PresleyDias    schedule 01.01.2012


Ответы (1)


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
person Mat    schedule 31.12.2011
comment
с ADD или без, он все еще дает мне ошибки. Моя версия MySQL: mysql Ver 14.12 Distrib 5.0.75, для apple-darwin10.8.0 (i686) с использованием оболочки EditLine - person user1040876; 01.01.2012
comment
Что вы имеете в виду под ошибками? Точно такая же ошибка или что-то другое? - person Mat; 01.01.2012
comment
такая же ошибка. Mysql::Error: у вас есть ошибка в синтаксисе SQL - person user1040876; 01.01.2012
comment
5.0.75? Разделение, насколько я знаю, доступно только начиная с 5.1. Что вам говорит SHOW VARIABLES LIKE '%partition%';? - person Mat; 01.01.2012
comment
моя версия 5.0.75, я попробую использовать 5.1+, чтобы посмотреть, работает ли она. Спасибо. - person user1040876; 01.01.2012