修改表为分区表

ybgba 2013-10-08 11:42:44
如题,我有一张普通表,现在想修改为range分区表,不知道可以修改吗?我在文档上看到使用partition by可以将普通表变成hash分区表,但是没有alter table成range表的说法,请教。谢谢。
...全文
640 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qdjyyl3 2014-03-13
  • 打赏
  • 举报
回复
使用partition by语法
ybgba 2013-10-14
  • 打赏
  • 举报
回复
是的 这样是比较直接的方式,但是如果数据量比较大怎么办,比如200G+的数据,我不可能停机一天来搞这个。
iihero_ 2013-10-10
  • 打赏
  • 举报
回复
5楼的方法已经很直接了。
ybgba 2013-10-09
  • 打赏
  • 举报
回复
我也有过这样的想法,但是费时费力啊,数据不大90G左右。我在考虑是否有其他更快的方法,正在测试中。
heisetaiyang 2013-10-08
  • 打赏
  • 举报
回复
之前我也碰到这个问题,我的方法是:先备份数据,然后drop掉表,建分区表,最后把数据从备份表导入到分区表。
ybgba 2013-10-08
  • 打赏
  • 举报
回复
我使用alter table test_range partition by range (id) (partition p0 values than (2000))得到不一样的报错:ERROR 1526 (HY000): Table has no partition for value 2038 经过检查,这个表内有数据,无法进行分区?我将数据全部删除后 创建分区成功。继续尝试。
ybgba 2013-10-08
  • 打赏
  • 举报
回复
我的mysql版本是5.5.34
ybgba 2013-10-08
  • 打赏
  • 举报
回复
这样是不行的 报错: ERROR 1505 (HY000): Partition management on a not partitioned table is not possible 我的建表语句: CREATE TABLE `test_range` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=786433 DEFAULT CHARSET=latin1 建表的时候没有指定range column,然后再add partition的时候语句不能认出那个column进行range
ACMAIN_CHM 2013-10-08
  • 打赏
  • 举报
回复
ALTER TABLE ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧