工作日志,error parsing query: unable to find time zone
坑
Windows 系統使用influxdb數據庫,在執行查詢語句時提示 ERR: error parsing query: unable to find time zone Asia/Shanghai
的錯誤。因為influxdb在non-unix系統(例如windows)上不能正常使用tz()語句。網上都說安裝go環境和重啟Influxd即可解決問題。可是我也安裝了go,也配置了環境變量,也重啟了influxd,依然報相同的錯誤。
填坑
先說解決方法:安裝golang,配置path和GOROOT環境變量,並且重啟電腦。ITDragon 因為沒有配置GOROOT,折騰了一天的時間。
填坑步驟
第一步:下載window版本的golang, 下載地址https://dl.google.com/go/go1.13.1.windows-amd64.msi
第二步:安裝golang,並配置環境變量,包括GOROOT 和path 系統環境變量,重啟電腦
第三步:重啟influxd
填坑時的思路
- 開始:按照網上教程安裝go,並配置了path環境變量。重啟influxd。(失敗,意料之中,(︶^︶))
- 然后:分析為什么安裝go,得知influxdb底層是通過go語言實現,使用tz語句需要的時間庫在非Unix系統上可能不存在。而go的安裝目錄中有時間庫C:\Go\lib\time\zoneinfo.zip。(看到曙光,<( ̄︶ ̄)↗[GO!])。
- 接着:分析安裝go的流程,是否有遺漏項。的確發現沒有配置GOROOT。可能需要指定安裝目錄才能確定時間庫的位置?抱着疑慮配置了GOROOT。因為沒有重啟電腦,所以配置沒有生效。(開始懷疑自己的判斷,(⊙_⊙)?)。
- 接着:分析安裝influxdb的版本,試了幾個版本皆以失敗告終(瀕臨崩潰,(;´༎ຶД༎ຶ`))。
- 接着:分析操作系統的版本,打開了虛擬機,啟動了之前安裝好的window server 2012 r2 。 結果啟動失敗,提示
vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:386 bugNr=1036521
(禍不單行,(╬▔皿▔)凸)。 - 最后:重啟電腦,修改BIOS的配置,開啟虛擬技術。結果好了 (╯‵□′)╯︵┻━┻ 。經過不斷地測試,確定是因為添加GOROOT 系統環境變量后沒有重啟電腦導致前面的失敗。
坑的教訓
配置了環境變量,考慮重啟???ITDragon最討厭的就是重啟。一般機器都開了五六個IDEA,一堆數據庫連接工具,一堆通訊軟件,POSTMAN,MQTTBOX,等。太南了 🤣🤣🤣🤣🤣🤣
來源go官網
The installer should put the c:\Go\bin directory in your PATH environment variable. You may need to restart any open command prompts for the change to take effect.
參考文檔:
https://dotnetplusplus.com/2017/10/18/time-zone-and-group-by-day-in-influxdb/