错误信息:
Illegal mix of collations for operation '>='
SQL Error: 1271, SQLState: HY000查询报错:
java执行语句如下:
select count(1) from t_user where username = ? and createtime >=? and createtime <=?直接在命令行执行这条语句,将?替换成实际的查询没问题。一到程序执行就报错。字符集没有问题。都是utf8的。有谁碰到这样的问题,给点提示。
错误提示是:
·         错误:1271 SQLSTATE: HY000 (ER_CANT_AGGREGATE_NCOLLATIONS) 消息:对于操作'%s',非法混合了校对。不明白是什么意思。中文和日期一起就有问题,单独的中文或者日期查询就没有问题。
郁闷到要死了。哪位大侠告诉我答案mysql IllegalHY000

解决方案 »

  1.   


    在java中打印出来sql语句看看是啥情况
      

  2.   

    打印出来的sql就是上面的那个
    select count(1) from t_user where username = ? and createtime >=? and createtime <=?这就是打印出来的语句。在mysql的命令行直接替换参数没有问题。这个查询。
      

  3.   

    java执行代码如下:
    public int CountSQLQuery(String querySql,Object...objects){
    int i=0;
    SQLQuery sqlq = createSQLQuery(querySql);
     for (int ii = 0; ii < objects.length; ii++) {
              //int j = ii + 1;
    Object o = new Object();
    o = objects[i];
              sqlq.setParameter(ii, o);
    }
    List list = sqlq.list();
    if(list!=null&&list.size()>0){
    i = Integer.parseInt(list.get(0).toString());
    }
    log.debug("count ok......................."+i);

    return i;
    }
      

  4.   

    querySql 就是传入的 sql语句:select count(1) from t_user where username = ? and createtime >=? and createtime <=?
      

  5.   

    o = objects[i];//这里是i还是ii?