Calendar

五月 2012
« 三月    
 123456
78910111213
14151617181920
21222324252627
28293031  

Categories

FreeBSD 在 mysql55-{server,client} 改用 CMake 建置後某些編譯選項無法傳遞

以往在 FreeBSD 編譯 databases/mysql55-{server,client} 時,要下這樣的參數:

make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci WITH_XCHARSET=complex install

不過因為在 MySQL 5.5.8 後的 build system 改成了 CMake,導致 ports maintainer 必須重新設計 Makefile。
而目前的 Makefile 尚未設計完善,所以想把這些 options 傳遞給 CMake 的話,只能直接改 Makefile 解決:

--- mysql55-server/Makefile.orig       2011-03-19 21:13:47.000000000 +0800
+++ mysql55-server/Makefile    2011-04-08 14:31:05.815962791 +0800
@@ -39,7 +39,10 @@
                -DINSTALL_SQLBENCHDIR="share/mysql" \
                -DINSTALL_SUPPORTFILESDIR="share/mysql" \
                -DWITH_LIBEDIT=0 \
-               -DWITH_LIBWRAP=1
+               -DWITH_LIBWRAP=1 \
+               -DDEFAULT_CHARSET="utf8" \
+               -DDEFAULT_COLLATION="utf8_general_ci" \
+               -DWITH_EXTRA_CHARSETS="complex"
 
 .ifdef USE_MYSQL
 .error You have `USE_MYSQL' variable defined either in environment or in make(1) arguments. Please undefine and try again.

如果在做這修改前不小心將沒設好的 MySQL 整套裝起來的話,請記得把 mysql55-client 也砍掉一起重裝。
特別是對那些真正需要用到 WITH_EXTRA_CHARSET="complex" 的人,有一邊沒弄好的話,網頁上就準備出現一大堆「???????」了。

至於是否能像以前那樣直接用 make 送參數,就只能慢慢等 maintainer,看他何時會重新把所有 options 對應上去了。

MySQL 6.0 最好先不要亂升

一個小小原因是因為 5.x -> 6.0 的話做一定會跟你說 .frm 已經壞了叫你修,
然後用 mysql_ugprade 跑下去跟你說修好了其實還是沒修好,
手動進去打 repair table xxx 怎麼打也還是顯示 corrupt 沒辦法修好,
雖然這個應該用 dump/restore 應該是搞得定,
但還有另一個更大的原因讓我不想升。

Continue reading MySQL 6.0 最好先不要亂升 »