Flowable使用docker中MySQL8,Springboot启动出错

本文讲述了在将项目迁移到docker环境时,因MYSQL大小写敏感性导致的问题,以及如何通过在创建DockerMySQL容器时设置lower-case-table-names来解决。同时,总结了Docker的诸多优点,如轻量级、快速部署和环境一致性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录


问题复现

        最近在将项目迁至docker环境时,出现启动时失败,报错信息如下:

Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'processEngine': 
FactoryBean threw exception on object creation; 
nested exception is org.flowable.common.engine.api.FlowableWrongDbException: version mismatch:
 library version is '6.6.0.0', db version is null Hint: 
Set <property name="databaseSchemaUpdate" to value="true" or value="create-drop" (use create-drop for testing only!) in bean processEngineConfiguration in flowable.cfg.xml for automatic schema creation....

原因分析

        因为项目是在更换了docker中Mysql8的数据库时出错的,为了保持与原来数据库版本一致,我特意安装了Mysql8.0.11版本。导入原来sql脚本后,springboot项目启动依然出错。

        上网查了资料之后基本断定是因为Mysql数据库没有忽略大小写的原因导致的。通过sql语句查看mysql大小写敏感配置如下:

mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.01 sec)
 

解决办法

修改MYSQL大小写敏感配置

  这里注意:

        docker中修改my.cnf 中的配置(lower-case-table-names=1)后,重启MYSQL

是无效的。

        docker只能后面在开始创建安装MYSQL容器时设置大小写敏感有效。直接加--lower-case-table-names=1是可以了。记录docker创建mysql容器的完整语句:

docker run --name mysql --restart=always \
    -p 3366:3306 \
    -e MYSQL_ROOT_PASSWORD="root" \
    -e TZ=Asia/Shanghai \
    -di mysql:8.0.11 --lower-case-table-names=1

         连接并查看新创建的mysql容器的配置,已经成功设置成1:

mysql> SHOW VARIABLES LIKE '%case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.07 sec)

问题小结

        修改了配置之后,项目可以正常启动。通过docker修改mysql配置的操作中,明显感觉到使用docker操作会很方便,但同时也会因为不熟悉带来一些小麻烦,但总体还是提高了开发效率。

docker的优点:

Docker有很多优点,包括:

1. 轻量级和可移植性:Docker容器是基于操作系统级虚拟化的,相对于传统的虚拟机,它更轻量级,并且可以在任何环境中移植和运行。

2. 快速部署和扩展:使用Docker可以快速创建、部署和启动容器,极大地减少了应用程序上线和扩展的时间和麻烦。

3. 环境一致性:在开发、测试和生产环境中使用相同的容器,可以确保应用程序在不同环境中的一致性,避免了由于环境差异导致的问题。

4. 资源利用率高:Docker容器可以共享操作系统内核,因此可以更有效地使用系统资源,提高资源利用率。

5. 简化依赖和配置管理:Docker可以将应用程序及其依赖打包在一个容器中,简化了依赖和配置管理的过程,减少了潜在的冲突和错误。

6. 更好的可移植性和可复用性:Docker容器可以轻松地在不同的主机和云平台之间迁移和复用,提高了应用程序的可移植性和可复用性。

7. 安全和隔离性:Docker提供了强大的安全和隔离机制,确保不同容器之间的应用程序和资源互相隔离,避免了潜在的安全风险。

总的来说,Docker可以帮助开发人员和运维人员更高效地管理和部署应用程序,提高开发和部署的速度和可靠性,并且更好地利用系统资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘一说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值