我正在尝试在WSO2中为MySql创建一个事件格式化程序但是遇到了问题。它似乎与“复合键列”的使用有关。我得到的错误是:
错误 - {MysqlEventAdaptorType}
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'Window = '15''附近使用正确的语法
只有在格式化程序中使用两个或更多键时才会发生这种情况:
<eventFormatter name="GenericAccountSQLFormatter" statistics="enable"
trace="enable" xmlns="http://wso2.org/carbon/eventformatter">
<from streamName="GenericAccountMeasureStream" version="1.0.0"/>
<mapping customMapping="disable" type="map"/>
<to eventAdaptorName="APCSQLOut" eventAdaptorType="mysql">
<property name="table.name">AccountStats</property>
<property name="update.keys">AccountId,Window</property>
<property name="execution.mode">insert-or-update</property>
</to>
</eventFormatter>
删除其中一个键(AccountId,Window),然后格式化程序将数据发送到MySQL。
有人可以帮忙吗?
答案 0 :(得分:1)
这是一个错误,当现有事件发送到具有复合键的MySQL适配器时会发生。创建了一个jira来跟踪这个,源补丁也可以在那里找到。
如果您不想创建/应用补丁,那么现在作为快速解决方法 - 您可以通过连接这两个属性从CEP查询输出复合键,并将其用作格式化程序中的键。
<强>更新强>
现在,jira here中提供了包含修复和构建说明的源补丁。构建完成后,您需要将其作为补丁应用于CEP。要将其作为补丁应用,请在<CEP>/repository/components/patches
中创建名为patch0xyz的目录(xyz是patch0135中的数字,也使xyz> 100),然后将jar放入其中。然后,您需要将jar重命名为org.wso2.carbon.event.output.adaptor.mysql_1.0.1.jar
。然后重新启动服务器。