【问题标题】:MySQL alter table partitioning syntaxMySQL 更改表分区语法
【发布时间】:2011-12-31 20:50:44
【问题描述】:

我尝试在 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 服务器版本相对应的手册,以在第 2 行的 'ALTER TABLE tt ADD PARTITION (PARTITION p0 VALUES IN' 附近使用正确的语法:

谁能告诉我语法有什么问题?

【问题讨论】:

标签: mysql partitioning


【解决方案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

【讨论】:

  • 有或没有 ADD,它仍然给我错误。我的 MySQL 版本是:mysql Ver 14.12 Distrib 5.0.75, for apple-darwin10.8.0 (i686) using EditLine wrapper
  • “错误”是什么意思?完全相同的错误,还是别的什么?
  • 同样的错误。 Mysql::Error: 你的 SQL 语法有错误
  • 5.0.75?分区,AFAIK,仅从 5.1 开始可用。 SHOW VARIABLES LIKE '%partition%'; 告诉你什么?
  • 我的版本是 5.0.75,我会尝试使用 5.1+ 看看它是否工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-05-26
  • 2011-03-24
  • 2014-03-03
  • 2020-12-26
  • 2013-06-20
  • 2019-12-27
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多