ZzzCrazyPig 2014-07-15 07:39 采纳率: 0%
浏览 809

Amoeba for mysql com.meidusa.amoeba.sqljep.ParseException: Not comparable

在使用Amoeba for mysql 进行水平切分的时候出现错误,水平切分规则根据date字段来切分
配置rule.xml片段如下:


odate
<![CDATA[
odate > to_date('2011-01-01','yyyy-mm-dd') and odate < to_date('2011-12-31','yyyy-mm-dd')
]]>
Node02


odate
<![CDATA[
odate > to_date('2012-01-01','yyyy-mm-dd') and odate < to_date('2012-12-31','yyyy-mm-dd')
]]>
Node03


odate
<![CDATA[
odate > to_date('2013-01-01','yyyy-mm-dd') and odate < to_date('2013-12-31','yyyy-mm-dd')
]]>
Node04


odate
<![CDATA[
odate > to_date('2014-01-01','yyyy-mm-dd') and odate < to_date('2014-12-31','yyyy-mm-dd')
]]>
Node05

请问有没有人遇到过这样的问题?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 08:44
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于你在rule.xml配置文件中定义的日期范围与你的MySQL数据库中的日期格式不兼容造成的。在MySQL中,日期通常以'YYYY-MM-DD'的格式存储。

    如果你的rule.xml配置文件中使用的日期格式是'YYYY-MM-DD',那么你需要确保你将这个日期范围转换为MySQL支持的格式。例如,你可以使用以下SQL查询来获取当前月份的所有记录:

    SELECT * FROM your_table WHERE date_column = CURDATE()::DATE;
    

    或者,如果你想要在每个月的第一天插入新数据,你可以这样做:

    INSERT INTO your_table (column_name) VALUES (CURDATE());
    

    然后,你需要更新你的rule.xml配置文件,以便在to_date()函数中使用新的日期格式。例如,你可以将<odate>元素的值更改为:

    <odate>to_date('now', 'YYYY-MM-DD')</odate>
    

    这将使rule.xml配置文件能够正确地处理你的日期范围,并允许Amoeba for MySQL进行水平切分。

    评论

报告相同问题?