如何从Rust应用连接Docker容器中的SurrealDB数据库?
问题
我正尝试将Rust应用连接至运行在Docker容器中的SurrealDB数据库。SurrealDB官网文档仅指定三种连接方式:memory、file和tikv。我按照官网指示执行以下命令运行SurrealDB容器:
docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start
我尝试用如下代码连接:
let ds = Datastore::new("http://0.0.0.0:8000").await?;
但收到错误:
value: Ds("Unable to load the specified datastore")'
请问该连接方式是否尚未实现?
回答
你用错了连接组件。Datastore 仅用于连接本地存储后端(memory、file、tikv),无法连接远程SurrealDB的HTTP服务。
要连接Docker容器中的SurrealDB,需使用Rust SDK里的 Surreal 客户端通过WebSocket协议连接,示例代码如下:
use surrealdb::Surreal; use surrealdb::engine::remote::ws::Ws; #[tokio::main] async fn main() -> surrealdb::Result<()> { // 连接到Docker中运行的SurrealDB实例 let mut db = Surreal::new::<Ws>("0.0.0.0:8000").await?; // 指定要使用的命名空间和数据库 db.use_ns("your_namespace").use_db("your_database").await?; // 执行后续数据库操作 Ok(()) }
你当前启动Docker容器的命令是正确的,容器已在8000端口同时提供HTTP和WebSocket服务,WebSocket是Rust客户端连接远程实例的标准方式。
内容的提问来源于stack exchange,提问作者Gixty
相关产品推荐
相关产品推荐

