Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Application-MikuDB Application-MikuDB
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • 爱特雪雪队
  • Application-MikuDBApplication-MikuDB
  • Merge requests
  • !2

fix(cli): reject SQL input early and provide clear MQL hints

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged 王俊泽 requested to merge fix/openeuler-nix-features into main Dec 28, 2025
  • Overview 2
  • Commits 4
  • Pipelines 0
  • Changes 2

问题背景

当用户在 mikudb-cli 中输入 SQL 语句(例如 SELECT 1)时, 由于 MikuDB 本身不支持 SQL,而是使用 MQL(Miku Query Language), 服务端会在解析阶段直接关闭连接。

CLI 侧只能感知到连接被关闭,因此输出了误导性的错误信息:Failed to read response header: early eof 这会让用户误以为是网络或服务异常,而不是语法问题。


根因分析

  • MikuDB 不支持 SQL 语法
  • SQL 输入在服务端被判定为语法错误并关闭连接
  • CLI 未能正确展示服务端返回的语法错误,只显示 early eof

修复方案

在 mikudb-cli 侧增加输入预检查逻辑:

  • 当用户输入以 SELECT 开头的 SQL 语句时
  • 在客户端本地直接拒绝执行
  • 给出清晰的错误提示,并展示 MQL 的正确用法示例
  • 不再向服务端发送请求,从而避免 early eof

验证情况

已在 openEuler 测试服务器验证:

  • 修复前: mikudb-cli -e "SELECT 1" -> early eof

diff 复制代码

  • 修复后: mikudb-cli -e "SELECT 1" -> 明确提示“不支持 SQL”,并给出 MQL 示例

yaml 复制代码

  • 合法的 MQL 命令(如 SHOW DATABASES)不受影响,功能正常
  • mikudb-server 的 systemd 日志无异常

影响范围

  • 仅修改 CLI 行为
  • 不涉及协议或服务端逻辑
  • 向后兼容,不影响已有功能

附上代码修改部分图和测试用例图

Edited Dec 30, 2025 by 王俊泽
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: fix/openeuler-nix-features