Mulesoft - 无法在数据库中侦听(MySQL 连接)

Posted

技术标签:

【中文标题】Mulesoft - 无法在数据库中侦听(MySQL 连接)【英文标题】:Mulesoft - Failure to listen in database (MySQL Connection) 【发布时间】:2021-08-27 09:31:44 【问题描述】:

我创建了一个到数据库 (mysql) 的连接器。使用“On Table Row”并执行项目,我有这个错误:

ERROR 2021-06-10 12:46:59,830 [_pollingSource_LocalBD_FlowTest/executor.01] [event: ] org.mule.extension.db.internal.source.RowListener: Failed to query table 'myTable' for new rows. Value '0000-00-00' can not be represented as java.sql.Date
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date
In data base there is a column "Date" with value 0000-00-00

我安装了其他驱动(先推荐的(5.1.48),现在是最新版本(8.0.25)),出现其他错误:

ERROR 2021-06-10 12:52:33,153 [_pollingSource_LocalBD_FlowTest/executor.01] [event: ] org.mule.extension.db.internal.source.RowListener: Failed to query table 'myTable' for new rows. Zero date value prohibited
java.sql.SQLException: Zero date value prohibited

我怎样才能解决它无需修改数据库

谢谢

【问题讨论】:

【参考方案1】:

这是 MySQL 处理日期的问题。出于某种原因,它允许使用zero month which is not valid 创建一个日期字段:

MySQL 允许您将“0000-00-00”的“零”值存储为“虚拟” 日期。”在某些情况下,这比使用 NULL 值更方便, 并使用更少的数据和索引空间。要禁止“0000-00-00”,请启用 NO_ZERO_DATE 模式。

MYSQL JDBC 驱动程序正确地抱怨了这一点,因为它不是一个有效的日期。月份不能为零。

显然有一种解决方法,将参数添加到 JDBC URL,以便驱动程序将任何“零日期”转换为 NULL:?zeroDateTimeBehavior=convertToNull。这在previous answer 中有所提及。

我建议完全避免在数据库中使用这种零日期,但如果无法避免,该参数应该解决它。

【讨论】:

如何在 Mulesoft (Anypoint Studio) 中添加参数?谢谢 如果您使用带有 URL 的数据库连接,只需将我共享的字符串添加到末尾即可。如果您不使用 URL,则可能需要将其添加为连接属性,键名为 zeroDateTimeBehavior,值 convertToNull

以上是关于Mulesoft - 无法在数据库中侦听(MySQL 连接)的主要内容,如果未能解决你的问题,请参考以下文章

MuleSoft系列 - 初试MuleSoft

使用 Anypoint 访问管理 - Mulesoft API

mulesoft 中的系统 API

如何在 mulesoft 中获取有关 dataweave 异常的更多信息

wamp中修改后mysq数据库l闪退无法登陆解决办法

如何根据用户限制对 mulesoft API 资源的访问?