You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Deno+MySQL构建REST API时遇Got packets out of order错误求助

排查Deno连接MySQL出现Got packets out of order错误的方案

这个Got packets out of order错误在Deno对接MySQL时挺常见的,我帮你梳理几个大概率能解决问题的方向:

1. 解决MySQL 8.0+的认证插件兼容性问题

如果你的MySQL版本是8.0及以上,默认的用户认证插件是caching_sha2_password,而很多早期的Deno MySQL模块对这个插件支持不好,会导致数据包顺序混乱。你可以通过以下操作切换root用户的认证方式:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
FLUSH PRIVILEGES;

执行完后重启MySQL服务,再重新运行你的Deno代码试试。

2. 避免连接后切换数据库,直接指定目标库

你当前的代码先连接了testDatabase,又通过use Ponys切换数据库,这种操作可能会触发数据包顺序错误。建议直接在连接配置里指定目标数据库:

import { Client } from "https://deno.land/x/mysql/mod.ts";
const client = await new Client().connect({
  hostname: "127.0.0.1",
  username: "root",
  port: 3306,
  db: "Ponys", // 直接指定要使用的数据库
  password: "",
});
// 删掉这行:await client.execute('use Ponys');
const students = await client.query('SELECT * FROM Students');
console.log(students); // 别忘了打印结果确认

3. 尝试使用更新的模块版本

你使用的https://deno.land/x/mysql/mod.ts可能是未指定版本的旧版,存在已知的数据包处理bug。试试锁定一个较新的稳定版本,比如:

import { Client } from "https://deno.land/x/mysql@v2.10.2/mod.ts";

新版本通常修复了很多兼容性问题,能大概率解决这类连接错误。

4. 确认MySQL服务的绑定地址

虽然你用了127.0.0.1,但还是检查下MySQL配置文件(my.cnf或my.ini)里的bind-address是否设置为127.0.0.1或者0.0.0.0,确保Deno能正常连接到本地MySQL服务。

内容的提问来源于stack exchange,提问作者twofeetmonster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:12:29