You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ConnectorX从含零日期的MySQL取数触发PanicException报错求助

问题:ConnectorX读取MySQL含零日期的datetime字段报错

使用ConnectorX从MySQL数据库加载数据时,数据库允许datetime列存在零日期值(如'0000-00-00 00:00:00'),对应SQL表字段类型为datetime。用Pandas读取数据无报错,但ConnectorX执行时触发如下错误:

PanicException                            Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_16620\2207944772.py in <module>
     11 db_url="mysql://{user}:{pw}@localhost:{port}/{db}".format(user="cookie",pw="cookie123",db="mydb",port=3306)
     12 query='Select * from reports_after_20230101 limit 20'
---> 13 iris=cx.read_sql(db_url,query)

c:\Users\cbhattac\Anaconda3\envs\cookie\lib\site-packages\connectorx\__init__.py in read_sql(conn, query, return_type, protocol, partition_on, partition_range, partition_num, index_col)
    222             raise ValueError("You need to install pandas first")
    223 
---> 224         result = _read_sql(
    225             conn,
    226             "pandas",

PanicException: Could not retrieve core::option::Option<chrono::naive::datetime::NaiveDateTime> from Value

解决建议

  • 修改连接URL,添加sql_mode参数:在MySQL连接URL中追加?sql_mode=ALLOW_INVALID_DATES,让ConnectorX将零日期视为合法值,示例代码:

    db_url="mysql://{user}:{pw}@localhost:{port}/{db}?sql_mode=ALLOW_INVALID_DATES".format(user="cookie",pw="cookie123",db="mydb",port=3306)
    
  • 在SQL查询中处理零日期:通过SQL语句将零日期转换为NULL或合法日期,避免ConnectorX解析失败,示例查询:

    SELECT 
      CASE WHEN datetime_col = '0000-00-00 00:00:00' THEN NULL ELSE datetime_col END AS datetime_col,
      -- 其他需要查询的字段
    FROM reports_after_20230101 LIMIT 20
    
  • 升级ConnectorX到最新版本:部分旧版本对MySQL零日期的处理存在兼容性问题,执行以下命令升级:

    pip install --upgrade connectorx
    

内容的提问来源于stack exchange,提问作者Chhandosee Bhattacharya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:35:04