(本文档仅供参考)
问题说明
在windows下部署Smartbi,运行一段时间后启动失败,经检查是由于mysql启动失败,其中mysql的启动日志可以在部署目录的mysql/data目录下获取,通常是会有一个后缀为err的文件,打开后查看最新的日志即可:
InnoDB: Trying to access page number 145058 in space 1575, space name smartbidemo/t_operationlog_detail, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server
或者mysql的日志有提示t_operationlog_detail、t_operationlog相关表无法正常写入的报错信息。
解决方案
此问题是由于此前Windows自带的mysql是32位,32位的单个表的最大存储时4GB,再有数据进行插入则会提示超出边界,因此导致mysql启动失败。
资料说明参考:https://blog.csdn.net/weixin_43230594/article/details/125935071
对此建议是将mysql升级到64位解决,升级步骤参考:
注意:更新前做好备份,包括知识库、整个mysql文件夹的备份。
1、备份知识库,知识库备份参考wiki文档:https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=44500250
2、停止mysql服务后,将整个mysql的目录备份,如若是更新mysql出现问题,只要把备份的mysql目录换到原本mysql目录即可。
如若是此时mysql已经无法正常启动,则直接mysql文件夹备份即可。
如下图,将整个mysql文件夹进行备份:
3、下载64位的5.7.25版本的mysql,下载地址:https://downloads.mysql.com/archives/community/
4、下载完之后,找到exe、mysqld.exe、mysqldump.exe文件,替换mysql/bin目录下的这三个文件
5、启动mysql服务
6、验证mysql版本
进入mysql部署的bin目录下,执行 certutil -hashfile mysqld.exe MD5 查看哈希值,如果哈希值如下图,并且smartbi可以正常使用,则更新成功。
注意:如果缺依赖(可以进入mysql/bin目录,执行mysql命令行,提示缺少dll,则说明缺依赖),需要安装64位的 vc ++ 2013 版本的vclib库:vclib.exe