常见问题
# 常见问题
# 启动IoTCenter服务时报错误“Couldn't find a valid ICU package”
问题现象
错误日志输出示例:
问题原因
当前操作系统缺少ICU包。
ICU 是用于支持 Unicode 的开发包,有些Linux系统做了精简处理,可能移除了ICU,这时需要手动安装。
解决方案
手动安装ICU包,以Debian/CentOS为例,执行命令
yum install icu
:yum install icu
如果看到成功安装的消息即表示软件包已成功安装。
如果无法安装或安装后依然无法解决问题,只能修改项目的配置文件,按照以下步骤操作。
- 打开IoTCenter/bin/GWHost1.runtimeconfig.json配置文件,加入以下的语句
{ "runtimeOptions":{ "configProperties": { "System.Globalization.Invariant": true } } }
- 打开IoTCenter/IoTCenterWeb/publish/IoTCenterWebApi.runtimeconfig.json配置文件,加入以下语句:
{ "runtimeOptions":{ "configProperties": { "System.Globalization.Invariant": true } } }
- 打开IoTCenter/bin/GWHost1.runtimeconfig.json配置文件,加入以下的语句
# 启动IoTCenter服务时报错误“GLIBCXX_3.4.14 not found”
问题现象
错误日志输出示例:
dotnet: /lib64/libstdc++.so.6: version \`GLIBCXX_3.4.21' not found (required by dotnet) dotnet: /lib64/libstdc++.so.6: version \`GLIBCXX_3.4.20' not found (required by dotnet)
问题原因
- 当前操作系统的libstdc++.so.6版本比较旧。
解决方案
检查本地libstdc++.so.6支持的版本:
strings /lib64/libstdc++.so.6 \| grep GLIBC
打印举例:
GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBC_2.17 GLIBCXX_DEBUG_MESSAGE_LENGTH 其中并没有服务要求的GCC版本 “GLIBCXX_3.4.20”,“GLIBCXX_3.4.21”。
检查本地libstdc++.so.6支持的版本:
以Debian或CentOS为例,打开链接:
http://ftp.de.debian.org/debian/pool/main/g/gcc-10/ (opens new window)
选择最新版本的GCC下载到本地,例如:
libstdc++6_4.7.2-5_i386.deb
ARM平台的libstdc++6_10.1.0-4_arm64.deb
解压文件:
ar -x libstdc++6_10.1.0-4_arm64.deb && tar xvf data.tar.xz
拷贝文件并建立软链接:
- 拷贝解压出来的文件
cd usr/lib/aarch64-linux-gnu cp libstdc++.so.6.0.28 /lib64 cd /lib64 rm libstdc++.so.6 //删除原有的链接文件
- 建立新文件的软链接
ln -s /lib64/libstdc++.so.6.0.28 libstdc++.so.6 chmod a+x libstdc++.so.6.0.28
- 拷贝解压出来的文件
检查是否升级成功。
执行
dotnet
命令,检查打印:
# Web登录提示“用户名或密码错误”
问题现象
错误示例:
问题原因
用户名密码输入错误,需确认是否输入正确。
软件未进行数据库升级操作。
软件已执行数据库升级操作,但后期使用中更换了授权文件。
解决方案
核查是否正常输入用户名和密码,发布包中存在默认用户请联系相关人员获取账号密码
核查数据库是否执行了升级加密操作,3.1.11.1版本之后GWUser及GWRole表相关数据需进行升级加密方可正常登录,操作步骤如下。
GWEncrypt.dll加密工具升级:选择选项2进行数据库升级操作,输入y开始执行,执行完成后,输入c退出加密工具,重新登录网页核查能否正常登录。
Web配置自动升级,完成Web客户端appsettings.json如下配置后,首先需启动网关进程,待网关进程成功启动后,再启动Web进程,Web进程启动完成后会自动开始执行升级数据库,升级过程中Web进程时会输出日志,等待5-10S后无日志输出时重新登录网页核查能否正常登录。
核查数据库是否执行了升级加密操作,但是更换了授权文件,如果更换了授权文件,原加密数据将无法解密会导致登录失败,此时需要使用备份数据恢复登录,操作步骤如下。
打开数据库,核查是否存在GWRole_AutoBack和GWUser_AutoBack表
移除GWUser和GWRole表,将GWRole_AutoBack表重命名为GWRole表,GWUser_AutoBack表重命名为GWUser表。
将IoTCenter/IoTCenterWeb/publish/appsettings.json中的IsAesUpdateSuccess修改为false。
执行步骤二中的GWEncrypt.dll或者配置Web重新升级数据库。
# 网页使用HTTP端口44381无法访问问题
问题现象
错误示例:
问题原因
IoTCenter6.0及以后版本默认移除了HTTP端口,只支持HTTPS协议44380。
解决方案
如果需求使用HTTP端口,修改IoTCenter\IoTCenterWeb\publish目录下的appsettings.json文件,找到HttpPort配置项,输入自定义HTTP端口,比如44481,重新启动Web进程即可使用HTTP协议访问Web:
如果看到Web程序启动日志中包括成功以上Listening日志,表示HTTP协议已成功启用了。
# 启动网关和Web程序失败,提示”Access denied for user 'root'@'10.44.78.134' (using password: NO)”
问题现象
网关无法启动,日志中包含Access denied for user 'root'@'10.44.78.134' (using password: NO)拒绝访问
问题原因
- IoTCenter使用MySQL数据库,但是AlarmCenterProperties.xml中Mysql密码配置错误,导致数据库连接失败,程序无法启动。
解决方案
方法一:使用IoTCenter\bin中的加密工具GWEncrypt.dll加密数据库密码更新AlarmCenterProperties.xml中的Mysql数据库密码;配置我呢见或者使用:
重启启动网关程序,核查是否报错。
方法二:检查版本,若使用IoTCenter3.1.14.0版本,数据库升级方式发生变化,默认用户帐号升级变更为通过访问接口升级:/IoT/api/v3/SystemConfig/pdateAesDatabase
注:待页面响应成功信息后即升级成功
# 启动Web程序失败,提示”unable to open database file”
问题现象
启动Web程序后,Web控制台报如下错误,无法打开Sqlite数据库文件
问题原因
- 核查IoTCenter\data\AlarmCenter\AlarmCenterProperties.xml中的数据库路径是否正确。
- 核查数据库文件是否损坏。
解决方案
核查IoTCenter\data\AlarmCenter\AlarmCenterProperties.xml中的数据库路径是否正确。
核查数据库文件是否损坏,如损坏则无法继续使用此数据库,需要使用产品发布包中的默认数据库,注意:SQLite数据库极易损坏,项目中不推荐使用SQLite数据库,推送使用MySQL数据库。
# 使用mysql数据库报错,提示 ”max_allowed_packet”
问题现象
使用mysql数据库在应用商店下载插件。
问题原因
- mysql默认加载的数据文件不超过1M
解决方案
修改mysql配置文件Windows:my.ini;Linux:my.cnf找到max_allowed_packet 字段,修改其值为200M。
在客户端连接使用:
show VARIABLES like '%max_allowed_packet%'
脚本进行查看max_allowed_packet与slave_max_allowed_packet都会变大。show VARIABLES like '%max_allowed_packet%'
# App连接失败,提示“未连接上服务!”
问题现象
在app上输出ip、用户名及密码后,点击登录,提示“未连接上服务!”
问题原因
- 默认情况下对web浏览器访问安全会做访问源限制,但若应用程序若运行在app内,不存在安全问题,除非攻击app自身,所以需做配置修改。
解决方案
修改IoTCenter/IoTCenterWeb/publish/下的appsettings.json文件中的配置,如下图:
"AllowOrigins": ["\*" ] web和app都可访问,无限制; "AllowOrigins": [ "https://localhost:44380", "http://localhost:44381" ]只能通过web访问。
# 服务启动正常,但HTTPS Web连接不上
问题现象
备注:出现在6.0及其之后的版本上,为解决了华为EBG安全问题的版本。
通过HTTPS Web无法加载登录界面:
IoTCenterWebApi的日志中有SslStream的报错,示例如下:
问题原因
访问Web的主机是Windows7主机,其本身只缺省支持TLS1.1版本,而IoTCenter经EBG安全测试后已升级到默认只支持TLS1.2。所有在Windows7主机上,通过浏览器无法访问IoTCenter HTTPS网站。
解决方案
方案一:IoTCenter启用HTTP协议,然后通过HTTP协议访问IoTCenter。
方案二:配置Windows7启用TLS1.2版本。
请参考微软官方方法:
可到以下网址下载Windows7的更新包:
http://catalog.update.microsoft.com/v7/site/search.aspx?q=kb3140245 (opens new window)
# 授权文件损坏
问题现象
服务器硬件改变会导致软件登录提示无授权,如当时注册时是双网卡开启,后来禁用了一张网卡或换了网卡、内存等硬件。
问题原因
授权时间过期。
解决方案
更换授权文件
IoTCenter软件最高权限管理员给出最新的授权文件后放置到opt/ganwei/IoTCenter/bin中。
# 重置平台账号密码
问题现象
当平台所有账号均无法登录或其它需要重置平台账号的场景的情况下。
操作方法
清空base_personnelinfo表与gwuser表。(注意清空这两张表会删除平台已有的所有用户数据)
重启平台,使用初始账号密码登录。(初始账号密码可咨询平台相关人员)
← Desktop客户端安装 原理解析→