Module sqlx_mysql::types

source ·
Expand description

Conversions between Rust and MySQL types.

Types

Rust typeMySQL type(s)
boolTINYINT(1), BOOLEAN, BOOL (see below)
i8TINYINT
i16SMALLINT
i32INT
i64BIGINT
u8TINYINT UNSIGNED
u16SMALLINT UNSIGNED
u32INT UNSIGNED
u64BIGINT UNSIGNED
f32FLOAT
f64DOUBLE
&str, StringVARCHAR, CHAR, TEXT
&[u8], Vec<u8>VARBINARY, BINARY, BLOB
Note: BOOLEAN/BOOL Type

MySQL and MariaDB treat BOOLEAN as an alias of the TINYINT type:

For the most part, you can simply use the Rust type bool when encoding or decoding a value using the dynamic query interface, or passing a boolean as a parameter to the query macros (query!() et al.).

However, because the MySQL wire protocol does not distinguish between TINYINT and BOOLEAN, the query macros cannot know that a TINYINT column is semantically a boolean. By default, they will map a TINYINT column as i8 instead, as that is the safer assumption.

Thus, you must use the type override syntax in the query to tell the macros you are expecting a bool column. See the docs for query!() and query_as!() for details on this syntax.

chrono

Requires the chrono Cargo feature flag.

Rust typeMySQL type(s)
chrono::DateTime<Utc>TIMESTAMP
chrono::DateTime<Local>TIMESTAMP
chrono::NaiveDateTimeDATETIME
chrono::NaiveDateDATE
chrono::NaiveTimeTIME

time

Requires the time Cargo feature flag.

Rust typeMySQL type(s)
time::PrimitiveDateTimeDATETIME
time::OffsetDateTimeTIMESTAMP
time::DateDATE
time::TimeTIME

bigdecimal

Requires the bigdecimal Cargo feature flag.

Rust typeMySQL type(s)
bigdecimal::BigDecimalDECIMAL

decimal

Requires the decimal Cargo feature flag.

Rust typeMySQL type(s)
rust_decimal::DecimalDECIMAL

uuid

Requires the uuid Cargo feature flag.

Rust typeMySQL type(s)
uuid::UuidBINARY(16), VARCHAR, CHAR, TEXT
uuid::fmt::HyphenatedCHAR(36)
uuid::fmt::SimpleCHAR(32)

json

Requires the json Cargo feature flag.

Rust typeMySQL type(s)
[Json<T>]JSON
serde_json::JsonValueJSON
&serde_json::value::RawValueJSON

Nullable

In addition, Option<T> is supported where T implements Type. An Option<T> represents a potentially NULL value from MySQL.