phpMyAdmin 未加载 MariaDB 特有类型(如 UUID、TINYTEXT、JSON 别名等)是因为默认仅支持 MySQL 兼容类型,需满足三条件:mysqli 扩展启用、服务器版本字符串含“MariaDB”且以“10.”开头、phpMyAdmin 版本 ≥5.2.0;否则类型被过滤或降级显示为 CHAR(36) 等。
phpMyAdmin 未加载 MariaDB 特有类型定义文件
phpmyadmin 默认只加载 mysql 兼容的数据类型列表,而 mariadb 新增的类型(如 text 的变体 tinytext、mediumtext,或 enum 的扩展语法、json 类型别名、uuid、point 等空间类型)需显式启用支持。若你编辑表结构时下拉菜单里看不到 uuid 或 json,大概率是 types.lib.php 或对应引擎适配逻辑未被正确载入。
检查路径:/www/server/phpmyadmin/libraries/classes/Types.php(宝塔环境)或 libraries/classes/Types.php(通用部署),确认其中是否包含 maria 相关分支判断。MariaDB 模式需通过 $cfg['Server']['extension'] === 'mysqli' 且服务端版本识别为 10. 开头才触发额外类型注册。
MySQLi 连接未返回完整服务器版本信息
phpMyAdmin 依赖 mysqli_get_server_info() 返回的字符串判断后端是否为 MariaDB。如果返回值是 5.5.68-MariaDB,它能识别;但如果因配置或代理层干扰,只返回 5.5.68(截断了后缀),就会跳过 MariaDB 专属类型加载逻辑。
- 在 phpMyAdmin 的「SQL」页执行
SELECT VERSION();,对比结果与mysqli_get_server_info()输出是否一致 - 若不一致,检查 PHP 的
mysqli.default_socket是否指向了错误 socket 路径,导致连接绕过了本地 MariaDB 实例 - 确认宝塔面板中 PHP 设置里的「数据库扩展」已启用
mysqli(而非仅mysql,后者已废弃且无版本探测能力)
phpMyAdmin 版本过旧,缺乏 MariaDB 10.3+ 类型支持
MariaDB 10.3 引入 UUID 原生类型,10.6 加入 ED25519 认证相关字段支持,这些在 phpMyAdmin 4.9.x 及更早版本中完全不可见。即使后端是 MariaDB 10.11,旧版 phpMyAdmin 仍会把 UUID 当作无效类型并静默忽略。
验证方式:访问 phpMyAdmin 底部状态栏,查看「版本」字段。若显示 4.9.7 或更低,必须升级:
立即学习“PHP免费学习笔记(深入)”;
- 宝塔用户:进入【软件商店】→ 找到 phpMyAdmin → 点击【设置】→【版本管理】→ 切换至
5.2.0+(推荐5.2.2) - 手动部署用户:下载官方 5.2.2 包,替换原目录(注意保留
config.inc.php) - 升级后清空浏览器缓存,避免 JS/CSS 缓存导致界面未刷新
自定义类型字段被 phpMyAdmin 主动过滤
当你用 SQL 直接创建含 UUID 类型的字段(如 CREATE TABLE t (id UUID PRIMARY KEY)),phpMyAdmin 在「结构」页可能显示该字段为 CHAR(36) 或直接不显示类型——这不是 bug,而是它对非标准类型的 fallback 行为。此时可视化编辑器无法还原原始定义,只能靠 SQL 模式维护。
这类情况没有绕过方案,只能接受:MariaDB 特有类型在 phpMyAdmin 中本质是「只读兼容」,不是「全功能支持」。真正需要频繁使用 UUID 或空间类型的项目,应直接用 SQL 标签页操作,或改用 DBeaver、TablePlus 等现代客户端。
最容易被忽略的是:即使所有条件都满足,phpMyAdmin 对 UUID 字段的「默认值」输入框仍不支持 UUID() 函数,必须手写 SQL 添加。这点和 MySQL 官方 Workbench 行为一致,但新手常误以为是配置问题。



















