blocklet server migrate 命令是扩展 Blocklet Server 实例的关键实用工具。它有助于将服务器的底层数据库从默认的 SQLite(非常适合开发和简单设置)迁移到更强大、更具可扩展性的系统,如用于生产环境的 PostgreSQL。
命令用法
要启动迁移,请使用 migrate 命令并指定目标数据库系统。
迁移命令
blocklet server migrate --dialect <dialect>选项
| 选项 | 描述 | 必需 | 允许值 |
|---|---|---|---|
--dialect | 要迁移到的目标数据库系统。 | 是 | postgres, sqlite |
该命令支持在 SQLite 和 PostgreSQL 之间迁移数据库。虽然主要用例是为了生产环境从 SQLite 升级到 PostgreSQL,但它也可用于从 PostgreSQL 迁回 SQLite,这对于为开发或调试创建可移植的快照可能很有用。
工作原理
迁移过程设计得非常简单明了。该命令首先从您现有的 SQLite 数据库中读取已安装的 blocklet 列表和其他基本配置。然后,它使用您提供的连接详细信息连接到新的 PostgreSQL 数据库,运行所有必要的 schema 迁移以创建所需的表,并用您的数据填充这些表。

分步指南:迁移到 PostgreSQL
请按照以下步骤将您的 Blocklet Server 数据从 SQLite 迁移到 PostgreSQL。
前提条件
在开始之前,请确保满足以下条件:
服务器至少已启动过一次
这是必需的,因为初始的
blocklet server start命令会创建迁移工具需要读取的 SQLite 数据库和表。目标数据库已准备就绪
您的 PostgreSQL 服务器必须已安装、正在运行,并且可以从您运行 CLI 的计算机上访问。
PostgreSQL 连接 URL
您必须拥有 PostgreSQL 数据库的完整连接字符串。
第 1 步:配置目标数据库
CLI 需要知道如何连接到您的 PostgreSQL 数据库。这通过设置 ABT_NODE_POSTGRES_URL 环境变量来完成。
设置环境变量
export ABT_NODE_POSTGRES_URL="postgres://user:password@host:port/database"请确保将 user、password、host、port 和 database 替换为您的实际 PostgreSQL 凭据。
第 2 步:运行迁移命令
设置好环境变量后,执行迁移命令。该过程将显示其进度,以类似 Getting blocklets... 的消息开始。
运行迁移
blocklet server migrate --dialect postgres第 3 步:启动服务器
一旦命令以 Migration postgres completed 消息结束,该过程就完成了。最后一步是启动您的 Blocklet Server。只要 ABT_NODE_POSTGRES_URL 环境变量存在,服务器将自动连接并使用您的新 PostgreSQL 数据库。
启动服务器
blocklet server start您的服务器现在正在 PostgreSQL 上运行,已为生产工作负载准备就绪。
故障排除
错误:SQLITE_ERROR: no such table
如果您遇到类似于 Failed to get blocklets: SQLITE_ERROR: no such table: blocklets 或 dose not exist 的错误消息,这几乎总是意味着初始的 SQLite 数据库从未被创建。
解决方案:您必须至少运行一次服务器以初始化数据库。运行 blocklet server start,等待它完全启动,然后用 blocklet server stop 停止它。之后,您可以再次尝试迁移过程。