# 2006-04-19  修正mysqlcc在MySQL 5.0上常报的 Table 'xxx' doesn't exist 错误

公司上了MySQL 5.0， 随之而来的不是用的有多爽的问题， 而是一直用的很顺手的mysqlcc...不行了， 其表现形式为经常会在状态栏中提示 "\[192.168.22.72] ERROR 1146: Table 'rimkpi.1' doesn't exist" 之类的。 选出数据来也不能在表格中直接修改了，到底mysqlcc出了啥问题呢？

经过观察，发现在MySQL 5.0上 EXPLAIN 语句的结果和4.1一下的版本不同了。4.1以前的返回的结果第一个字段是tablename， 而4.1以后和5.0的返回的是id号（一般情况下就是1了），第三个字段才是tablename。看来是这里出了问题，不过怎么会在4.1上可以，5.0反而不行了呢？ 很不爽，于是去MySQL的官方网站把mysqlcc的source拖了一份下来，用Source-Navigator跟了一把，发现原来是在CQueryWindow\.cpp的execQuery的方法(line 447)中的一段白痴代码：

```
default_table = explain_query->row( mysql()->mysql()->version().major >= 4 &&
    mysql()->mysql()->version().minor >= 1 ? 2 : 0);
```

如果版本号是4.1或者5.1的话，这个判断的结果是2；而如果版本号是5.0的话，结果就是0了。正确的代码至少也应该是

```
default_table = explain_query->row(
    ( mysql()->mysql()->version().major == 4 && mysql()->mysql()->version().minor >= 1 ) ||
    ( mysql()->mysql()->version().major >= 5 ) ? 2 : 0);
```

真是...大概开源就这点好处了。 mysqlcc现在已经不再继续维护了，看来只能自己找到mysql的开发包重新编译个自用版本的mysqlcc了，哈哈
