V2 数据集创建失败的各种情况及解决方案


飞致云 发布于 2024-11-07 / 93 阅读 / 0 评论 /

1 创建关联数据集失败

现象:两表关联(或多表关联),其中 1 表(或多表)为 sql,单独创建 sql 集正常,和其他表关联时,报 SQL ERROR: xxx 语法错误。

原因:创建跨源关联数据集时,会使用 calcite 语法,单独创建 sql 数据集时使用原生数据库语法,所以可能会出现单独创建数据集没问题,但是在与其他数据集关联时报错。

解决方法:到 sql 数据集中,简化 sql,排查语法出现问题的地方,换成适合 calcite 的即可。calcite 语法参考链接。可能出现语法问题的地方:with 语法,时间函数中的 date_add()、date_sub()。

2 带参数的 sql 数据集

现象:在使用不带参数的 sql 数据集时一切正常,但是某些地方使用参数后,就出现报错。此现象一般出现在有 join 的 sql 语句中。

原因:DataEase sql 解析问题

解决办法 :

#开启动态日志
docker logs -f --tail=100 dataease

#在 DataEase 中重新执行 sql,排查解析出现问题的地方,试试换种方式绕开

3 数据查询时间过长,超时导致创建数据集失败

现象:没有出现 1、2 的情况,但是保存的时候失败报错,报错中一般会包含 “timeout“字样,如果没有建议先百度完整报错,95%都可以搜索到。比如搜索 Oracle 的错误代码:ORA-01013:xxxxx

原因:查询时间长,超过了数据库设置的执行时间,或者数据库资源不够终止了查询。

解决办法:在编辑数据源页面中的高级设置中延长查询时间,增加时间还是失败的话,检查资源是否足够,资源不够的增加资源。

4 创建数据集时,所选数据源下数据集显示不完全

现象:比如使用 Oracle 数据源时,数据库中查看有100多张表,但是对接 DataEase 之后只能查看到部分表。

原因:数据库中 schema 的影响,100多张表可能是不同的 schema。

解决方法:查看是不是多个不同的 schema,每个 scheme 创建一个数据源。

5 因数据库模式开启 ANSI_QUOTES,导致数据集创建失败

现象:数据源校验成功,数据集可以正常查询到数据,但是不能保存成功,点击查看数据源表,报错:com.mysaljdbc.exceptions,jdbc4.MySQLSyntaxErrorException: Table 'database.`table`' doesn't exist。

image-2024-11-7_10-25-11.png

原因:DataEase 查表时使用表名为 ‘databaseName.`tableName`’ ,在表名中有 `` ,而数据库中开启 ANSI_QUOTES 时,会影响标识符引用的处理,在默认情况下,反引号表示转义,开启该模式后,反引号不再具有转义含义,导致sql解析出现偏差,出现找不到表的情况。

解决方法:

#查询数据库模式
SELECT @@sql_mode;

#如果结果中出现 ANSI_QUOTES ,将其删除,重启数据库服务即可。



是否对你有帮助?