
MadelineProto 使用 Amp MySQL 驱动连接数据库时,若 URI 缺少协议前缀(如 tcp://),会触发“Unsupported protocol version 255”致命错误;正确添加 tcp:// 即可解决。
madelineproto 使用 amp sql 驱动连接 mysql 时,若 uri 缺少协议前缀(如 `tcp://`),会触发“unsupported protocol version 255(expected: 10)”致命错误;正确添加 `tcp://` 即可解决。
在 MadelineProto 中启用 MySQL 持久化存储时,数据库连接配置看似简单,但一个细微的 URI 格式问题就可能导致服务无法启动。上述错误并非来自账号权限、网络连通性或 MySQL 版本不兼容,而是 Amp 的 mysql:// 或 tcp:// 协议解析器未识别默认协议所致——当 URI 仅写为 172.22.208.1:3306 时,Amp 无法推断应使用 MySQL 原生 TCP 协议,从而尝试以未知方式握手,最终返回协议版本 255(MySQL 服务器拒绝该非法请求,实际响应的是错误包头字节)。
✅ 正确做法是:显式指定 tcp:// 协议前缀(注意:不是 mysql://,Amp 当前稳定版仅支持 tcp:// 方式连接 MySQL):
use danog\MadelineProto\Settings\Database\Mysql;
use danog\MadelineProto\Settings;
use danog\MadelineProto\API;
$database = (new Mysql())
->setUri('tcp://172.22.208.1:3306') // ← 关键:必须包含 tcp://
->setUsername('wsl_root')
->setPassword('1')
->setDatabase('tg_app');
$settings = new Settings();
$settings->setDb($database);
$MadelineProto = new API('session.madeline', $settings);
⚠️ 注意事项:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 不要使用
mysql://或//开头,Amp\Sql\MySQL 连接器当前不支持mysql://协议格式,仅接受tcp://host:port; - 确保 MySQL 服务监听
0.0.0.0:3306(而非仅127.0.0.1),尤其在 Docker 或 WSL 环境中; - 若使用 MySQL 8.0+,确认用户认证插件为
mysql_native_password(而非默认的caching_sha2_password),否则可能引发额外鉴权失败(可通过ALTER USER 'wsl_root'@'%' IDENTIFIED WITH mysql_native_password BY '1'; FLUSH PRIVILEGES;修复); - 推荐在生产环境启用连接池与重试机制,可通过
$database->setOptions(['connect_timeout' => 5])增强健壮性。
总结:该错误本质是客户端协议协商失败,而非服务端配置问题。只需修正 URI 为 tcp://host:port 格式,即可让 Amp 正确初始化 MySQL 连接,使 MadelineProto 的数据库持久化功能正常工作。










