MyCATApache / Mycat-Server

GNU General Public License v2.0
9.51k stars 3.85k forks source link

c# oracle 数据库 ,使用1.4版本的时候出错---errno:923 ORA-00923: 未找到要求的 FROM 关键字 #707

Open yuyanqiuqiu opened 8 years ago

yuyanqiuqiu commented 8 years ago

WARN BusinessExecutor3 -execute sql err : errno:923 ORA-00923: 未找到要求的 FROM 关键字 con:JDBCConnection [id=6,autocommit=true,pool=org.opencloudb.jdbc.JDBCDatasource@5581434, schema=TTL, dbType=ORACLE, oldSchema=TTL, packetId=1, txIsolation=0, running=false, borrowed=true, host=null, port=-1, con=oracle.jdbc.driver.T4CConnection@213b23a1, respHandler=SingleNodeHandler [node=dn1{SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())}, packetId=1], attachement=dn1{SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())}, headerOutputed=false, modifiedSQLExecuted=false, startTime=1452152165619, lastTime=1452152231411, isSpark=false, processor=org.opencloudb.net.NIOProcessor@c7191cd]

以下是配置节点: image

fireflyhoo commented 8 years ago

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())

这个语法是mysql 特有语法, oracle 不支持,

你可以改成 SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP()) from dual

为了兼容 mysql 可以在你的库里面建立一个 一行一列 的 dual 表,

用jdbc模式 要用标准的c99sql语法

mycatmerger commented 8 years ago

有可能是jdbc驱动自动发出的,可以在mycatjdbc端进行拦截

magicdoom commented 8 years ago

可以考虑在后端jdbc实现里来拦截这个sql 欢迎提pr来支持