Chinaunix

标题: 高人留步:msyql partition 问题 [打印本页]

作者: beyond_dream    时间: 2007-08-09 17:01
标题: 高人留步:msyql partition 问题
创建下面的 partition  报错误:

CREATE TABLE `card2` (
  `cardid` int(12) unsigned NOT NULL,
  `else` varchar(20) NOT NULL,
  PRIMARY KEY  (`cardid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY HASH(CAST(SUBSTRING(CONCAT(`cardid`),1,2) as unsigned))
    PARTITIONS 34;

错误提示:ERROR 1154 : this partition function is not allowed

如果单独 SELECT CAST(SUBSTRING(CONCAT(`123456789`),1,2) as unsigned)  
结果 是12  没有 问题
作者: beyond_dream    时间: 2007-08-09 21:44
再顶
作者: beyond_dream    时间: 2007-08-10 01:31
顶完睡觉
。。。。。。。。。。。。
作者: beyond_dream    时间: 2007-08-14 11:41
等待。。。。。。。。
作者: showsa    时间: 2007-08-14 12:53
错误提示都告诉你了,顶什么啊
作者: yejr    时间: 2007-08-14 14:49
innodb目前只能使用同一个表空间,你用partition估计也没啥提高
作者: beyond_dream    时间: 2007-08-20 01:15
TO  showsa 兄弟

错误是提示那个分区函数有问题

所以我特意单独执行了那个分区函数 、
SELECT CAST(SUBSTRING(CONCAT(123456789),1,2) as unsigned)  
结果 是12  没有问题
所以这下就糊涂了
如果不你知道问题的解决方案  不妨告诉我一下
不胜感激
作者: showsa    时间: 2007-08-21 01:35
不是所有的函数都支持用于分区的,提示已经说明了问题。

再者如果过于复杂,效率要打折扣,得不偿失
作者: yueliangdao0608    时间: 2007-08-22 15:19
错误提示:ERROR 1154 : this partition function is not allowed

PARTITION不支持这个函数。
作者: beyond_dream    时间: 2007-08-25 14:27
再次晕到了

http://bbs.chinaunix.net/thread-965922-1-3.html
我希望大家也能像我回答那位兄弟一样
给个具体的答案  好吗

我们不需要那么含蓄,也不需要那么装高深
作者: yejr    时间: 2007-08-25 17:14
CONCAT(`cardid`) 这是一个不确定的因素,你让mysqld如何计算得到结果?
作者: trace    时间: 2007-08-25 17:20
标题: 其实提示已经非常清楚了
分区时候的函数。有部分函数是不支持的。
具体请参看mysql手册中的:
17.5.3.2. Functions Not Permitted in Partitioning Expressions

给你个地址吧:
http://dev.mysql.com/doc/refman/ ... ons-disallowed.html
以后碰到问题记得现去手册上找。
作者: yueliangdao0608    时间: 2007-08-27 14:11
并不是所有的函数都能用到PARTITION上的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2