Este artículo ha participado en el evento "Ceremonia de creación de recién llegados" para comenzar juntos el camino de la creación de oro.
1. Descripción del error
Dos plataformas se construyen localmente. Las versiones de las dependencias principales de hasor son las mismas. Ambas bases de datos de GreenPlum están conectadas y se ejecutan las mismas declaraciones de DataQL:
<!--hasor核心依赖【是老平台接入,由于兼容问题,最终用的并不是最新的4.2.5版本】-->
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-spring</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-dataway</artifactId>
<version>4.2.1</version>
</dependency>
复制代码
Aquí está el DataQL ejecutado:
// SQL 执行器切换为分页模式及首页页面设置
hint FRAGMENT_SQL_QUERY_BY_PAGE = true
hint FRAGMENT_SQL_QUERY_BY_PAGE_NUMBER_OFFSET = 1
// 定义查询SQL
var query = @@sql() <%
select * from yz_test_match
%>
// 创建分页查询对象
var pageQuery = query(${pageSize},${pageNumber});
// 设置分页信息
run pageQuery.setPageInfo({
"pageSize" : #{pageSize},
"currentPage" : #{pageNumber}
});
// 执行分页查询
var result = pageQuery.data();
// 查询分页信息
//var result = pageQuery.pageInfo();
return result;
复制代码
Por qué hay dos plataformas, la diferencia es el archivo de configuración:
# 报错配置【使用的是GreenplumDriver】【这个是要集成项目的配置信息】
spring:
application:
name: dataWay-demo
datasource:
url: jdbc:pivotal:greenplum://xxx.xx.xxx.xxx:2345;DatabaseName=gpdb
username: gpadmin
password: gpadmin
driver-class-name: com.pivotal.jdbc.GreenplumDriver
type: com.alibaba.druid.pool.DruidDataSource
# 未报错配置【使用的是P6SpyDriver和postgresql的组合】
spring:
application:
name: dataWay-demo
datasource:
url: jdbc:p6spy:postgresql://xxx.xx.xxx.xxx:2345/gpdb
username: gpadmin
password: gpadmin
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
type: com.alibaba.druid.pool.DruidDataSource
复制代码
Mensaje de error [se omite alguna información innecesaria]:
2021-07-23 15:15:26.877 ERROR 9904 --- [nio-8088-exec-1] n.hasor.dataway.service.ApiCallService : [line 9:17~11:2 ,QIL 1:6] Query dialect missing.
net.hasor.dataql.runtime.InstructRuntimeException: [line 9:17~11:2 ,QIL 1:6] Query dialect missing.
Caused by: java.lang.IllegalArgumentException: Query dialect missing.
复制代码
2. Análisis de causas
Dado que es un proyecto antiguo que integra Hasor, el proyecto utiliza el controlador greenplum. El sitio web oficial describe el dialecto utilizado por el ejecutor de la siguiente manera [después de la versión 4.2.1, el ejecutor SQL inferirá automáticamente el dialecto correspondiente de acuerdo con la conexión de la base de datos utilizada] y Hasor El dialecto de la base de datos greenplum no es compatible, pero sí lo es PostgreSQL. [La base de datos gp es una evolución de pg data], así que considere usar FRAGMENT_SQL_PAGE_DIALECT para configurarlo:
3. Resolución de problemas
Según la descripción del sitio web oficial, DataQL ha agregado una declaración para establecer el dialecto:
hint FRAGMENT_SQL_PAGE_DIALECT = postgresql
复制代码
Error:
{
"success": false,
"message": "line 2:33 mismatched input 'postgresql' expecting {'true', 'false', 'null', STRING, HEX_NUM, OCT_NUM, BIT_NUM, INTEGER_NUM, DECIMAL_NUM}",
"code": 500,
"lifeCycleTime": 5,
"executionTime": -1,
"value": "line 2:33 mismatched input 'postgresql' expecting {'true', 'false', 'null', STRING, HEX_NUM, OCT_NUM, BIT_NUM, INTEGER_NUM, DECIMAL_NUM}"
}
复制代码
Me reí cuando lo vi [modificado y probado nuevamente]:
hint FRAGMENT_SQL_PAGE_DIALECT = "postgresql"
复制代码
éxito:
{
"success": true,
"message": "OK",
"code": 0,
"lifeCycleTime": 17,
"executionTime": 11,
"value": {
"firstrecommendfield": "豫K9F573",
"secondrecommendfield": "460010993506966",
"isusing": 1,
"futurestartdate": 1618934400000,
"handle": 1,
"possibility": 1,
"attribution": null,
"sourcetype": 0
}
}
复制代码
4. Haz un resumen
El sitio web oficial es la mejor información para resolver el problema, pero la documentación de muchos sitios web oficiales casi no tiene sentido. Al final, es necesario analizar el problema y ver el mensaje de error. Si el mensaje de error no está claro, es necesario analizar el código fuente.