【发布时间】:2018-03-09 15:49:13
【问题描述】:
我对@987654321@ 的Mule ESB 还是新手,我就是无法解决这个问题。
我无法理解为什么我的 Mule flow 因 sql server 插入错误而失败。
负载似乎有数据,但由于某种原因,查询参数没有填充该数据。我可以很好地从表或文件中读取数据,只是写入横向的 db 表。
我需要做什么才能将有效负载写入 sql server 数据库?
以下是我在 AnyPoint Studio 中运行 Mule 应用程序时收到的错误消息。由于隐私原因,我已从消息中删除了大部分有效负载。
我还发布了我的流 xml。
任何帮助将不胜感激。谢谢
********************************************************************************
Message : Cannot insert the value NULL into column 'AgentId', table 'GARDB1dev.src.AgentList'; column does not allow nulls. INSERT fails. (com.microsoft.sqlserver.jdbc.SQLServerException).
Payload : [{Agent_ID=10032, **REDACTED DATA** [..]]
Payload Type : java.util.ArrayList
Element : /Load-AgentList/processors/2/1/1 @ gar-data-load:sharepoint.xml:51
Element XML : <db:insert config-ref="GAR-DB-Connection-SSPI" doc:name="Insert AgentList Data">
<db:parameterized-query>insert into src.AgentList (AgentId,PartyId,PartyType,AgentIdStatus,SalesOrg,AgentIdStatusStart,AgentIdStatusEnd,AgentName,SubOrganization,[Function],NewToOrg,NewToChannel,DaysAgentIdActive,Region,AgentPhone,CertificationSummary)Values (#[payload.Agent_ID],#[payload.Party_ID],#[payload.Party_Type],#[payload.Agent_ID_Status],#[payload.Sales_Organization],#[payload.Agent_ID_Status_Start],#[payload.Agent_ID_Status_End],#[payload.Agent_Name],#[payload.Sub_Organization],#[payload.Function],#[payload.New_To_Org],#[payload.New_To_Channel],#[payload.Days_Agent_ID_Active],#[payload.Region],#[payload.Agent_Phone],#[payload.Certification_Summary])</db:parameterized-query>
</db:insert>
--------------------------------------------------------------------------------
我的 Mule Flow 的 XML 描述如下:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:sharepoint2010="http://www.mulesoft.org/schema/mule/sharepoint2010" xmlns:sharepoint="http://www.mulesoft.org/schema/mule/sharepoint" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/sharepoint http://www.mulesoft.org/schema/mule/sharepoint/current/mule-sharepoint.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/sharepoint2010 http://www.mulesoft.org/schema/mule/sharepoint2010/current/mule-sharepoint2010.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
<file:connector name="input" autoDelete="false" streaming="true" validateConnections="true" doc:name="File" readFromDirectory="C:\Users\rpearso7\_gar-data\input" />
<flow name="Load-AgentList">
<file:inbound-endpoint path="C:\Users\rpearso7\_gar-data\input" responseTimeout="10000" doc:name="File" moveToDirectory="C:\Users\rpearso7\_gar-data\archive" connector-ref="input" moveToPattern="#[function:datestamp]-#[message.inboundProperties['originalFilename']]">
<file:filename-regex-filter pattern="agent_list\.csv" caseSensitive="false"/>
</file:inbound-endpoint>
<dw:transform-message doc:name="Transform Message" metadata:id="fdb1aea0-6e94-425f-9493-ee71983b8eb1">
<dw:input-payload mimeType="application/csv"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload]]></dw:set-payload>
</dw:transform-message>
<logger message="************** Payload Loaded" level="INFO" doc:name="Log Payload"/>
<scatter-gather doc:name="Scatter-Gather">
<threading-profile maxThreadsActive="1" poolExhaustedAction="WAIT"/>
<processor-chain>
<logger message="***************************** Truncate AgentList Table" level="INFO" doc:name="Logger"/>
<db:update config-ref="GAR-DB-Connection-SSPI" doc:name="Truncate table">
<db:parameterized-query><![CDATA[truncate table src.AgentList;]]></db:parameterized-query>
</db:update>
<logger message="************************************ AgentList table truncated" level="INFO" doc:name="Logger"/>
</processor-chain>
<processor-chain>
<logger message="********************************* Start Insert" level="INFO" doc:name="Logger"/>
<db:insert config-ref="GAR-DB-Connection-SSPI" doc:name="Insert AgentList Data">
<db:parameterized-query><![CDATA[insert into src.AgentList (
AgentId,
PartyId,
PartyType,
AgentIdStatus,
SalesOrg,
AgentIdStatusStart,
AgentIdStatusEnd,
AgentName,
SubOrganization,
[Function],
NewToOrg,
NewToChannel,
DaysAgentIdActive,
Region,
AgentPhone,
CertificationSummary)
Values (
#[payload.Agent_ID],
#[payload.Party_ID],
#[payload.Party_Type],
#[payload.Agent_ID_Status],
#[payload.Sales_Organization],
#[payload.Agent_ID_Status_Start],
#[payload.Agent_ID_Status_End],
#[payload.Agent_Name],
#[payload.Sub_Organization],
#[payload.Function],
#[payload.New_To_Org],
#[payload.New_To_Channel],
#[payload.Days_Agent_ID_Active],
#[payload.Region],
#[payload.Agent_Phone],
#[payload.Certification_Summary])]]></db:parameterized-query>
</db:insert>
</processor-chain>
</scatter-gather>
<logger message="**************** Complete" level="INFO" doc:name="Logger"/>
</flow>
</mule>
【问题讨论】:
-
能否请您也添加日志?您是否尝试过调试应用程序?通过在记录器或插入处理步骤设置断点,您可以检查值运行时。 #[payload.Agent_ID] 似乎为空或根本不存在。你检查拼写了吗? Mule 表达式语言区分大小写...
-
您最终能否从您的输入文件中发布一个 sn-p?
标签: sql mule mule-studio mule-component mule-esb