select(count_star()).first 不满足特征
trait not satisfied for select(count_star()).first
我想统计 table 个命名主题的记录。我几乎是在 book
之前完成的
但当我这样做时
let count: u64 = topics.select(count_star()).first(&conn).unwrap();
我不断收到(.first 下划线表示错误):
[rustc E0277] [E] the trait bound `u64: diesel::deserialize::FromSql<diesel::
sql_types::BigInt, diesel::mysql::Mysql>` is not satisfied
the trait `diesel::deserialize::FromSql<diesel::sql_types::BigInt, diesel::
mysql::Mysql>` is not implemented for `u64`
help: the following implementations were found:
<u64 as diesel::deserialize::FromSql<diesel::sql_types::
// I guess there's more information but Vim's
// Pmenu only shows up to eight lines.
所以我可能需要在这里做一些类型转换,但老实说,我不知道在哪一点。
如错误所述,count_star 生成 BigInt。
并且正如 BigInt 的文档所示,BigInt 可以与 i64 相互转换,而不是 u64。
我想尽管 MySQL 有无符号整数,但 Diesel 不支持它们,因为 SQL 没有指定无符号整数,所以不是所有的数据库引擎都有它们(例如 Postgres 没有)。
无论如何,您的 count
应该是 i64
,或者您需要设置从 BigInt
到 i64
再到 [=14 的更明确的转换=].
我想统计 table 个命名主题的记录。我几乎是在 book
之前完成的但当我这样做时
let count: u64 = topics.select(count_star()).first(&conn).unwrap();
我不断收到(.first 下划线表示错误):
[rustc E0277] [E] the trait bound `u64: diesel::deserialize::FromSql<diesel::
sql_types::BigInt, diesel::mysql::Mysql>` is not satisfied
the trait `diesel::deserialize::FromSql<diesel::sql_types::BigInt, diesel::
mysql::Mysql>` is not implemented for `u64`
help: the following implementations were found:
<u64 as diesel::deserialize::FromSql<diesel::sql_types::
// I guess there's more information but Vim's
// Pmenu only shows up to eight lines.
所以我可能需要在这里做一些类型转换,但老实说,我不知道在哪一点。
如错误所述,count_star 生成 BigInt。
并且正如 BigInt 的文档所示,BigInt 可以与 i64 相互转换,而不是 u64。
我想尽管 MySQL 有无符号整数,但 Diesel 不支持它们,因为 SQL 没有指定无符号整数,所以不是所有的数据库引擎都有它们(例如 Postgres 没有)。
无论如何,您的 count
应该是 i64
,或者您需要设置从 BigInt
到 i64
再到 [=14 的更明确的转换=].