MeterSphere使用MySQL8.0部署(Windows10)

背景

看MeterSphere文档推荐5.7,但是因为我本地和服务器均为8.0版本,考虑到已经有很多服务在使用MySQL服务,而且相对来说,8.0比5.7性能更好,其他地方也更好些,所以就尝试直接用Mysql8.0部署

本地环境:Windows10 MySQL8.0.18

关于为什么会推荐使用MySQL5.7,其实主要原因是他们后端的sql有些group by语句在高版本的MySQL中是不合法的。

MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)

既然知道了原因,那么我们改动起来也就方便了,可以通过以下3种方式调整:

1. 调整sql语句,

2. 用MeterSphere推荐的5.7版本,

3. 更改MySQL8.0的配置。

我们选择第3种;

步骤

选择更改MySQL8.0的配置也有2种方式,

解决方法一:

其实也就是MeterSphere官方推荐的修改MySQL的配置文件,将配置文件中的sql_mode属性改为sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,但是我调整后重启本地MySQL服务后,发现并未生效。

重启本地MySQL

打开Navicat,

用sql查询:

select @@sql_mode;
show variables like 'sql_mode';

发现并未生效。具体原因还有待确定。

解决方法二:

1. 通过Navicat打开命令列界面,

2. 通过set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 进行修改。

如果通过下面页面设置和查询时,则需要重新打开连接才能查询到修改后的值。 

 3. 此时运行metersphere后端程序

运行一会儿后,会发现报错,如下图所示,提示

2021-08-13 12:19:39,496  WARN ConfigServletWebServerApplicationContext: 591 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException: 
Migration V86__v1.10.1_release.sql failed
-----------------------------------------
SQL State  : HY000
Error Code : 1267
Message    : Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
Location   : db/migration/V86__v1.10.1_release.sql (G:\learn\1ceba\metersphere\backend\target\classes\db\migration\V86__v1.10.1_release.sql)
Line       : 35
Statement  : CALL project_systemid()

2021-08-13 12:19:39,502  INFO k.scheduling.quartz.SchedulerFactoryBean: 845 - Shutting down Quartz Scheduler
2021-08-13 12:19:39,502  INFO          org.quartz.core.QuartzScheduler: 666 - Scheduler clusterScheduler_$_DESKTOP-6GGVMP81628828158930 shutting down.
2021-08-13 12:19:39,502  INFO          org.quartz.core.QuartzScheduler: 585 - Scheduler clusterScheduler_$_DESKTOP-6GGVMP81628828158930 paused.
2021-08-13 12:19:39,502  INFO          org.quartz.core.QuartzScheduler: 740 - Scheduler clusterScheduler_$_DESKTOP-6GGVMP81628828158930 shutdown complete.
2021-08-13 12:19:39,502  INFO       com.zaxxer.hikari.HikariDataSource: 350 - DatebookHikariCP - Shutdown initiated...
2021-08-13 12:19:39,516  INFO       com.zaxxer.hikari.HikariDataSource: 352 - DatebookHikariCP - Shutdown completed.
2021-08-13 12:19:39,519  INFO       com.zaxxer.hikari.HikariDataSource: 350 - DatebookHikariCP - Shutdown initiated...
2021-08-13 12:19:39,526  INFO       com.zaxxer.hikari.HikariDataSource: 352 - DatebookHikariCP - Shutdown completed.
2021-08-13 12:19:39,529  INFO         org.eclipse.jetty.server.session: 149 - node0 Stopped scavenging
2021-08-13 12:19:39,530  INFO ipse.jetty.server.handler.ContextHandler:1154 - Stopped o.s.b.w.e.j.JettyEmbeddedWebAppContext@31940704{application,/,[file:///C:/Users/tlibn/AppData/Local/Temp/jetty-docbase.8081.8600213245208404957/],STOPPED}
2021-08-13 12:19:39,539  INFO ConditionEvaluationReportLoggingListener: 136 - 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-08-13 12:19:39,555 ERROR g.springframework.boot.SpringApplication: 847 - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException: 
Migration V86__v1.10.1_release.sql failed

即Migration V86__v1.10.1_release.sql failed运行失败,并且打开metersphere_version表,会发现version属性值为86的行的success值为0,即运行失败。

此时我们打开V86__v1.10.1_release.sq文件,可以看到里面的sql,我们将里面的sql复制出来,放到Navicat的命令列界面进行运行,并将metersphere_version表中version属性值为86的行的success值改为1.

然后继续启动后端程序进行运行,一会儿后即可在控制台看到启动成功。

我们再启动前端服务,启动成功后可以在控制台看到前端服务访问地址。

然后打开前端服务地址,会出现如下页面,可以看到左侧是登录功能,右侧是图片,此时没有显示是因为我们没有更改默认的图片地址,所以图片未找到。

 我们输入用户名密码(admin/metersphere),点击登录,即可登录到metersphere。

需要注意的是,第二种方式修改的sql_mode,在MySQL服务重启后,会被还原为默认设置,需要每次重启MySQL服务后都进行设置。

欢迎大家关注我的公众号,会不定期更新一些开发与测试的一些技术文章。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值