sqlx
sqlx copied to clipboard
`ParseError(TooLong)` when using macro `sqlx::query_as!` to map NaiveDateTime
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)