【运维部署】DataEase 启动失败 Table 'xxx' doesn't exist


飞致云 发布于 2023-06-29 / 743 阅读 / 0 评论 /
一、问题现象 启动 DataEase 后,报错信息包含类似 Table 'xxx' doesn't exist 的内容: Caused by: java.sql.SQLSyntaxErrorException: Table 'dataease.QRTZ_LOCKS' doesn't exist 20

一、问题现象

启动 DataEase 后,报错信息包含类似 Table 'xxx' doesn't exist 的内容:

Caused by: java.sql.SQLSyntaxErrorException: Table 'dataease.QRTZ_LOCKS' doesn't exist
2023-06-26 14:33:59,656 [QuartzScheduler_clusterScheduler-947a13014bba1687757802422_MisfireHandler] ERROR o.s.s.quartz.LocalDataSourceJobStore 4017 - MisfireHandler: Error handling misfires: Database error recovering from misfires.
org.quartz.JobPersistenceException: Database error recovering from misfires.
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'dataease.V_AUTH_MODEL' doesn't exist
### The error may exist in io/dataease/ext/ExtDataSourceMapper.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select datasource.*,         authInfo.privileges as `privileges`         from (select GET_V_AUTH_MODEL_ID_P_USE (?, 'link') cids) t,datasource         left join (         SELECT         auth_source,         group_concat( DISTINCT sys_auth_detail.privilege_extend ) as `privileges`         FROM         (         `s

二、问题原因

出现类似 Table 'dataease.V_AUTH_MODEL' doesn't exist 这类报错,通常是因为数据库表名大小写敏感配置错误,比如配置了大小写敏感后建表时使用的全小写表名,而程序在查询时使用的是全大写表名,所以会报表找不到错误。

通常,可以在 my.cnf 文件中配置表名自动小写,这样在创建表时,表名以小写形式存储在磁盘上,并且在查询表时不区分大小写。参数如下:

在数据库中执行如下语句可以查询配置是否生效:

show variables like 'lower_case%';

三、解决方法

1. 使用内置数据库时

DataEase 的安装包中自带的 MySQL 数据库默认配置了 lower_case_table_names=1,如果你是使用的安装包部署仍出现此问题,则可能是 my.cnf 文件权限不正确导致。必须将 my.cnf 的文件权限配置为 644 后重启系统方可生效,不能设值为 777如果文件权限放开太大 MySQL 数据库启动时不会加载此配置文件,所以配置不会生效

# 正确的文件权限
# ls -l /opt/dataease/conf/my.cnf
-rw-r--r--. 1 root root 633 6月  29 14:10 /opt/dataease/conf/my.cnf
# 使用此命令修改文件权限为 644
chmod 644 /opt/dataease/conf/my.cnf

2. 使用外置数据库时

如果是使用了自己部署的外置数据库,建议使用在线文档中配的 my.cnf 配置自己的数据库:离线安装 - DataEase 文档



是否对你有帮助?