我手上有一個對外的網站是從幾年前就租用的美國Godaddy - Windows Hosting,當初租用Godaddy的原因及特點是無流量限制,檔案空間不限速度也還可以,但對我來說有個最致命的一點就是MySQL的DB容量限制,1GB。這個1GB搞的我很麻煩,系統資料庫每週都會更新資料,就會越長越大,但舊資料也不能刪除,所以一超過這個限制就提心吊膽會被Godaddy無情的封鎖。對,我曾經被封鎖過,還必須郵件往返才解決問題。
話說今年(2018)三月剛好租用的Godaddy Hostoing又要到期,心一橫來搬家。但Linux Hosting好找、Windows Hosting難尋,找了貴到離譜的台灣Hosting,系統爛還有流量限制,也試用價格不便宜的GCP,但C/P值都不理想。最後在某網站看到推薦SmartASP.Net,MySQL的限制是10GB,足足比Godaddy的1GB大了10倍,流量也不限制就連價格也差不多,所以我直接買了一般共用空間的最高等級Premium Plan,價格是漂亮的$7.95/月。
不過最重要的搬家花了不少時間處理MySQL技術問題,以下稍微作點記錄。
MySQL Connection限制
錯誤訊息:User 'a34322_n1' has exceeded the 'max_user_connections' resource (current value: 10)
原來SmartASP.Net的MySQL有Connection限制,但他們也太小看我的網站了,輕輕鬆鬆就突破這個限制,爆了。所以本來買的是.NET Advance plan就改昇級到Premium plan,價差不大可以接受。但請注意昇級後,要去按網站上的一個按鈕:[Upgrade to 20] <— 但…我的網頁上就沒這個按鈕,只能開Ticket請客服幫忙手動增加。以下是四個plan的connection限制,在Knowledge base才有得查。
- .NET Basic plan - 10 MAX
- .NET Advance plan - 10 MAX
- .NET Premium plan - 20 MAX
- Semi plans - 40 MAX
另外'max_user_connections' 也延伸出另一個問題,就是網站平時20個connection都是滿的,那平常要怎麼維護或是自動更新資料呢?因為大部份時間都被user佔滿了。原本以為又沒解了,但想了一夜後發現原來.NET Premium plan有開放一個功能”Extra DB Users”,有了這個金牌功能就可以另外再加DB user,而'max_user_connections'是跟著DB user走,所以開新DB User就有獨立的 connection 數可以用,就將系統用的DB user和維護的DB user分作不同帳號解決。
客戶使用 TSC 條碼機列印標籤,正常列印QR Code時如果內容有中文時,刷條碼會出現亂碼無法閱讀。我查詢QR Code 的規格是允許中文字元,但如果依照原廠文件使用以下方法列印則不可行,印出來還是亂碼。其中第二種方式的 B0006 為 Binary + 4碼字元長度,目前只能使用第三種方式,但中文需先轉為 4字元的 Unicode。
更新: 最後問題點竟是 SCLIB_DLL 的版本問題造成中文亂碼。
Unicode 編碼字元查詢:http://jicheng.tw/hanzi/unicode.html?s=7000&e=7FFF
方式一(亂碼):
LIB_DLL.sendcommand("QRCODE " + QRCodeX + ", " + QRCodeY + ",H,2,A,0,M2,S7,"中文");
方式二(亂碼):
SCLIB_DLL.sendcommand("QRCODE " + QRCodeX + ", " + QRCodeY + ",H,2,A,0,M2,S7," B0006+中文 Unicode 內碼");
方式三(正常中文):
var cmd = 'QRCODE 60,30,H,7,A,0,M2,S1,\"\u7f16\u7801\"';
資料來源: http://blog.csdn.net/u010121228/article/details/72866417