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

发布时间:2024年01月23日

目录


问题复现

? ? ? ? 最近在将项目迁至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可以帮助开发人员和运维人员更高效地管理和部署应用程序,提高开发和部署的速度和可靠性,并且更好地利用系统资源。

文章来源:https://blog.csdn.net/haohaizi_liu/article/details/135769284
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。