这个MySQL分区查询有什么错误?

时间:2014-09-26 22:19:19

标签: mysql

请告诉我这个问题的问题:

ALTER TABLE 
    `phar_bills`
PARTITION BY RANGE COLUMNS (YEAR(bill_date))
( 
    PARTITION p0 VALUES LESS THAN (2014), 
    PARTITION p1 VALUES LESS THAN (2015), 
    PARTITION p2 VALUES LESS THAN (2016), 
    PARTITION p3 VALUES LESS THAN (2017), 
    PARTITION p4 VALUES LESS THAN (2018), 
    PARTITION p5 VALUES LESS THAN (2019), 
    PARTITION p6 VALUES LESS THAN (2020), 
    PARTITION p7 VALUES LESS THAN (2021), 
    PARTITION p8 VALUES LESS THAN (2022), 
    PARTITION p9 VALUES LESS THAN (2023), 
    PARTITION p10 VALUES LESS THAN (2024), 
    PARTITION p11 VALUES LESS THAN (2025), 
    PARTITION p12 VALUES LESS THAN (2026), 
    PARTITION p13 VALUES LESS THAN (2027), 
    PARTITION p14 VALUES LESS THAN (2028), 
    PARTITION p15 VALUES LESS THAN (2029), 
    PARTITION p16 VALUES LESS THAN (2030)
)
SUBPARTITION BY LIST COLUMNS(pharmacy_code) 
( 
    PARTITION phar1 VALUES IN('1'), 
    PARTITION phar2 VALUES IN('2'), 
    PARTITION phar3 VALUES IN ('3')
)

1 个答案:

答案 0 :(得分:0)

COLUMNS与分区表达式之间的单词RANGE的用途是什么?

    BY RANGE COLUMNS (YEAR(bill_date))
             ^^^^^^^

在那里做塑料的是什么?我不相信这种有效的语法,但也许您正在运行更新版本的MySQL。

YEAR(bill_date)是一个表达式,而不是列的名称。

根据MySQL 5.5参考手册:

"RANGE COLUMNS does not accept expressions, only names of columns."

参考:http://dev.mysql.com/doc/refman/5.5/en/partitioning-columns-range.html


但如果这不是有效的语法,我们完全希望MySQL抛出一个错误,很可能是#34;#1064你的语法错误了#34;。

除此之外,还存在各种其他可能的问题......但我们预计大多数问题也会抛出实际的MySQL错误消息。 "分区未启用","存储引擎不支持分区","分区表"上不支持外键,或某些此类。