oracle 上的 wso2am 2.1.0 - sqlexception 缺少右括号
wso2am 2.1.0 on oracle - sqlexception missing right parenthesis
使用 WSO2AM-2.1.0-update12(carbon-apomgt 标签 v6.2.108)通常适用于 mysql。我们打算将底层数据库切换到Oracle DB(据我所知是11g),看起来很简单。
创建 API APIM 抛出 SQLException
ORA-00907: missing right parenthesis
我们将异常追踪到
org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO:7652
正在执行以下查询:
SELECT
A.SCOPE_ID, A.NAME, A.DISPLAY_NAME,
A.DESCRIPTION, C.SCOPE_BINDING
FROM
((IDN_OAUTH2_SCOPE AS A INNER JOIN AM_API_SCOPES AS B ON A.SCOPE_ID = B.SCOPE_ID)
INNER JOIN IDN_OAUTH2_SCOPE_BINDING AS C ON B.SCOPE_ID = C.SCOPE_ID )
WHERE B.API_ID = 1;
运行 此针对 APIM 数据库的查询本身确实重现了异常,因此代码尚未经过正确测试。对于某些定制,如果可能,我们宁愿尝试修复代码,也不愿迁移到较新的版本(我们无法确保问题已解决或我们的定制会起作用)
我怀疑查询根本没有经过测试,正确的查询可能看起来像
SELECT
A.SCOPE_ID, A.NAME, A.DISPLAY_NAME,
A.DESCRIPTION, C.SCOPE_BINDING
FROM
IDN_OAUTH2_SCOPE A INNER JOIN AM_API_SCOPES B ON A.SCOPE_ID = B.SCOPE_ID
INNER JOIN IDN_OAUTH2_SCOPE_BINDING C ON B.SCOPE_ID = C.SCOPE_ID
WHERE B.API_ID = 1;
如果查询在句法和语义上不等同,我想验证并纠正我
你能试试下面的方法吗?
SELECT A.SCOPE_ID, A.NAME, A.DISPLAY_NAME, A.DESCRIPTION, C.SCOPE_BINDING FROM ((IDN_OAUTH2_SCOPE A INNER JOIN AM_API_SCOPES B ON A.SCOPE_ID = B.SCOPE_ID) INNER JOIN IDN_OAUTH2_SCOPE_BINDING C ON B.SCOPE_ID = C.SCOPE_ID ) WHERE B.API_ID = ?
中找到更正后的查询
使用 WSO2AM-2.1.0-update12(carbon-apomgt 标签 v6.2.108)通常适用于 mysql。我们打算将底层数据库切换到Oracle DB(据我所知是11g),看起来很简单。
创建 API APIM 抛出 SQLException
ORA-00907: missing right parenthesis
我们将异常追踪到
org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO:7652
正在执行以下查询:
SELECT
A.SCOPE_ID, A.NAME, A.DISPLAY_NAME,
A.DESCRIPTION, C.SCOPE_BINDING
FROM
((IDN_OAUTH2_SCOPE AS A INNER JOIN AM_API_SCOPES AS B ON A.SCOPE_ID = B.SCOPE_ID)
INNER JOIN IDN_OAUTH2_SCOPE_BINDING AS C ON B.SCOPE_ID = C.SCOPE_ID )
WHERE B.API_ID = 1;
运行 此针对 APIM 数据库的查询本身确实重现了异常,因此代码尚未经过正确测试。对于某些定制,如果可能,我们宁愿尝试修复代码,也不愿迁移到较新的版本(我们无法确保问题已解决或我们的定制会起作用)
我怀疑查询根本没有经过测试,正确的查询可能看起来像
SELECT
A.SCOPE_ID, A.NAME, A.DISPLAY_NAME,
A.DESCRIPTION, C.SCOPE_BINDING
FROM
IDN_OAUTH2_SCOPE A INNER JOIN AM_API_SCOPES B ON A.SCOPE_ID = B.SCOPE_ID
INNER JOIN IDN_OAUTH2_SCOPE_BINDING C ON B.SCOPE_ID = C.SCOPE_ID
WHERE B.API_ID = 1;
如果查询在句法和语义上不等同,我想验证并纠正我
你能试试下面的方法吗?
SELECT A.SCOPE_ID, A.NAME, A.DISPLAY_NAME, A.DESCRIPTION, C.SCOPE_BINDING FROM ((IDN_OAUTH2_SCOPE A INNER JOIN AM_API_SCOPES B ON A.SCOPE_ID = B.SCOPE_ID) INNER JOIN IDN_OAUTH2_SCOPE_BINDING C ON B.SCOPE_ID = C.SCOPE_ID ) WHERE B.API_ID = ?
中找到更正后的查询