公司上了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了,哈哈