Archive for 程式設計

xHarbour + mySQL 5.0.x + 中文字解決方案

*2006.02.01:
今天閒來無事,嘗試把一個案子的資料庫改用 mySQL 5.0.18 (最新版的喔!),測試結果如下:
第一次測試,字元集採用 utf8,結果,輸入的中文字『功蓋許』,存檔後變成亂碼!
第二次測試,字元集改換 big5,存檔的特殊中文字也是亂碼。
第三次測試,在 sql-mode=”…..” 加上 ,NO_BACKSLASH_ESCAPES,『功蓋許』中文字可以正常顯示了,可是,碰上另一個問題,查詢時,其他中文字查詢沒問題,唯獨查詢到『功蓋許』時,都顯示查不到資料。
第四次測試,終於完成了,寫入特殊中文字『功蓋許』沒問題,查詢也沒問題,設定如下:
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=latin1
sql-mode=”……” 補上 ,NO_BACKSLASH_ESCAPES

重新啟動 mySQL server…..

然後刪除原來產生的 database -> drop database xxx;
再重新建立 database -> create database xxx;

大功告成!可以存特殊中文字,也可以查詢特殊字了…

ps. 至於和網頁搭配執行的 php 4.x/5.x 是否也可以正常顯示/存檔,因為沒時間測試…..So..

Comments

mySQL 5.0.x 研究

*2005.11.26:

前幾天研究 xHarbour + mySQL 5.0.x 的連結,已經沒有問題了,詳文請參考 Go

今天嘗試將 mySQL Server 從 4.0.x 升級到 5.0.x,使用的方法很笨,想說這樣子最簡單,可是,失敗了….

以前升級同樣為 4.0.x 版時,只要先將 mySQL server STOP,然後就可以從 mySQL 網站下載新版非安裝檔壓縮包回來解開,然後將除了 data 目錄之外的資料全部覆蓋到舊的 mySQL 目錄內,然後重新啟動 mySQL Server 就算成功升級了!

這次升級 5.0.x,我先把 mySQL 5.0.x 解出來,也是先將 4.0.x 先停掉,然後複製過去覆蓋掉 4.0.x 的檔案,並且修改 my.ini 檔案(my.ini 已經不是放在 %windir%目錄下了..),結果,mySQL server 5.0.x 可以跑了,但是,卻查不到任何資料…

若有解答,再報告!

*2005.12.08:
今天花了一天時間研究,發現 mySQL 5.0.16 對於脫易字元 ‘\’ 處理上有問題….
可以在 sql-mode=”…” 裡面加上 NO_BACKSLASH_ESCAPES, 這樣子 “功”, “蓋”, “許\” 等字元就可以存檔,叫出來也沒有問題…
但是呢…. 又發現另一個問題,我的討論版,部落格含有脫易字元的地方,都多了 ‘\’ 的符號…
真不像話, 只好再等囉…

Comments

xHarbour 與 FWH 相容性問題(2005.10.17版)

xHarbour 在 2005.10 之後的版本,據說是修改了 hb_stack, 讓系統更穩定,只是,我還沒感覺出來… :D
不過,這個修改,造成了與 FWH 2.6 的不相容,還要等 Antoino 找出方法解決。

但是,我用 FWH 2.5,嘿嘿~沒有這個問題喔… ;)

後續….:
*2005.10.25:
更新完 CVS 之後,發現不能玩了 … :(

*2005.11.01:
今天嘗試將 xharbour\include\*.h 中含有 hb_stackST 改為 hb_stacX
xharbour\source\vm\*.c 中含有 hb_stackST 改為 hb_stacX
另外 fwh\lib\fivehc.lib 找尋 hb_stack 改為 hb_stacX
重新編譯 xHarbour and FWH(*.prg) and my APP
範例程式跑個 msgInfo( “OK” ) …. 嘿嘿~竟然跑出來畫面來了 :) )
再執行我自己的程式,跑到 ACTIVATE WINDOW 之後,就結束了… :( (

看來,fivehc.lib 中的 ffwndrun 中呼叫的 hb_stack() 不是那麼單純….. :(

*2005.11.04:
有個網友幫忙提出解決方案!不用再買新的 FWH 囉~ :D
http://www4.zzz.com.tw/phpbb2/viewtopic.php?t=12

Comments

mySQL 的流水號重整方法

mySQL 流水號怎麼重整?
測試了之後,找到方法:
SET @ID=0; // 注意: 這裡的 ‘@’ 與 ‘=’
UPDATE table_a
SET num=(@ID:=@ID+1) // 注意: 這裡面的 ‘:=’ 有個 ‘:’
WHERE ….

如此就可以幫你把 num 欄位作流水號重整,從 1 開始累加…

Comments