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 连接)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Anypoint 访问管理 - Mulesoft API