GridDB的 Rust客户端在插入带有时间戳的行时返回类型不匹配的错误

编程语言 2026-07-09

我在使用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章