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