一、背景
switchHosts是一个非常不错的支持切换host的软件,可以在 开发环境、测试环境、线上环境等之间自由切换。
https://oldj.github.io/SwitchHosts/
最近遇到一个问题,在关闭SwitchHosts时,启动内嵌的MySQL服务进行单元测试时,报错。
核心意识是提示无法解析 localhost。
二、问题分析
但是此时SwitchHosts并没有开启啊!大家都潜意识地认为没有开启SwitchHosts此时hosts文件中应该是类似上图所示的 默认的hosts映射。
非常费解...
最终抱着怀疑人生的态度,打开本地host文件,发现本地hosts文件里的确只有 #SwitchHosts 这一行....
于是按照上面的截图所示,将原始的 hosts 配置重新写回去并保存,一切正常。
因此怀疑只要安装了 SwitchHosts,会默认将本地hosts文件清空,配置生效时写入或者通过其他机制让域名到IP的映射生效。
其实此时开启SwitchHosts,切换到 带有localhost的映射也可以正确运行。
另外安装最新版(3.5.0)发现SwitchHosts 退出后,本地的hosts文件是 SwitchHosts中最后生效的设置。
三、反思
要相信错误提示,要相信错误提示,要相信错误提示!
当自己的惯性思维和错误提示冲突时,优先按照错误提示的暗示来排查问题!!
用软件时如果能了解原理最好去了解,如果无法了解原理要多观察软件的设置对本地文件的影响。