sqlx icon indicating copy to clipboard operation
sqlx copied to clipboard

`ParseError(TooLong)` when using macro `sqlx::query_as!` to map NaiveDateTime

Open zhuyu4839 opened this issue 8 months ago • 0 comments

Bug Description

When use marco code:

use serde::{Deserialize, Serialize};
use sqlx::types::chrono::NaiveDateTime as Timestamp;

#[derive(Debug, Deserialize, Serialize)]
pub struct Log {
     datetime: Timestamp,
}

let result = sqlx::query_as!(
    Log,
    r#"SELECT * FROM `t_log` "#,
)
.fetch_all(conn)
.await
.map_err(DbaError::DataBassError)?;

The panic when execute: called `Result::unwrap()` on an `Err` value: DataBassError(ColumnDecode { index: "1", source: ParseError(TooLong) })

And without macro code:

use serde::{Deserialize, Serialize};
use sqlx::types::chrono::NaiveDateTime as Timestamp;

#[derive(Debug, Deserialize, Serialize, sqlx::FromRow)]
pub struct Log {
     datetime: Timestamp,
}

let result = sqlx::query_as("SELECT * FROM `t_log`")
    .bind(url_like)
    .fetch_all(conn)
    .await
    .map_err(DbaError::DataBassError)?;

has no any panic.

Minimal Reproduction

ParseError(TooLong) when using macro sqlx::query_as! to map NaiveDateTime.

Info

  • SQLx version: 0.7.4
  • SQLx features enabled: "runtime-tokio-rustls", "sqlite", "macros", "chrono"
  • Database server and version: SQLite 3.46.0
  • Operating system: Manjaro Linux
  • rustc --version: 1.78.0 (9b00956e5 2024-04-29)

zhuyu4839 avatar Jun 04 '24 10:06 zhuyu4839