GridDB的 Rust客户端在插入带有时间戳的行时返回类型不匹配的错误
我在使用GridDB的 Rust客户端,尝试向一个包含 TIMESTAMP 列的容器中插入数据。连接可以正常建立,容器也已成功创建,但当我尝试插入一行时,遇到了一个与类型相关的错误。
use griddb::StoreFactory;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let props = vec![
("notification_member", "192.168.0.10:10001"),
("cluster_name", "myCluster"),
("database", "public"),
("user", "admin"),
("password", "admin"),
];
let factory = StoreFactory::new();
let store = factory.get_store(props)?;
// Get existing container
let mut container = store.get_container("events")?;
// Insert row with timestamp value
container.put(vec!["1", "2026-05-06 10:30:00", "login"])?;
println!("Row inserted");
Ok(())
}
名为 events 的容器已经存在,其列为:
id→ 字符串event_time→ 时间戳event_name→ 字符串
为什么GridDB会拒绝这次插入?从Rust传递 TIMESTAMP 值的正确方式是什么?
解决方案
GridDB Rust客户端对TIMESTAMP列需要一个特定的 Timestamp 结构,而不是字符串。
更新 Cargo.toml
[dependencies]
griddb = "0.5.0"
chrono = "0.4"
尝试:
use chrono::NaiveDateTime;
let dt = NaiveDateTime::parse_from_str("2026-05-06 10:30:00", "%Y-%m-%d %H:%M:%S")?;
let event_time = Timestamp {
value: dt.and_utc().timestamp_millis(),
};
container.put(gsvec!["1", event_time, "login"])?;
container.commit()?;
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。