下面这个程序在mysql和sqlite上都没问题,但是postgres就会报错。
create qcc_company(id varchar(32) primary key,name text,to_time timestamp);
sqlx::query("insert into qcc_company(id,name,to_time) values($1,$2,$3);")
.bind("1234")
.bind("test")
.bind(None::<String>)
.execute(&pool)
.await?;
执行后就出现下面的报错
column "to_time" is of type timestamp without time zone but expression is of type text
有没有办法表示任意类型的null
这是在写一个工具从jsonline导入数据库,根据json自动生成sql写入,mysql和sqlite都搞定了,pg这里卡了好久
1
共 4 条评论, 1 页
评论区
写评论使用 easy-sqlx 简化 sqlx 开发,可以减少 sql 语句和 bind
https://gitee.com/knowgo/easy-sqlx
设置 null
摘抄的说明 --- 如何让 set xxx = null
接收 User::() 参数,其中 * 为字段名称,括号内为要设置的值 对于可空字段,即 Option 包裹的字段,还可以使用 User::_opt() 函数来设置值, 此时可以传入 None 来设置字段为 null
你得开启一个处理时间的feature, time 或 chrono 都可以,然后传一个对应时间类型的 None
我看了下pg规范,null是有类型的,不像sqlite和mysql,null是独立的类型
--
👇
Bai-Jinlin: sqlx里面包了时间类型https://docs.rs/sqlx/latest/sqlx/types/chrono/index.html
sqlx里面包了时间类型https://docs.rs/sqlx/latest/sqlx/types/chrono/index.html