解决 DVWA 联合注入报错:Illegal mix of collations for operation ‘UNION‘ 全指南

张开发
2026/4/5 19:30:44 15 分钟阅读

分享文章

解决 DVWA 联合注入报错:Illegal mix of collations for operation ‘UNION‘ 全指南
一、问题背景在 DVWA 靶场进行 SQL 联合注入测试时很多小伙伴都会遇到一个经典报错plaintextIllegal mix of collations for operation UNION这个报错的本质原因非常明确执行UNION操作时参与联合查询的多个结果集的字符集collation不一致导致 MySQL 无法完成数据合并直接抛出错误。二、报错原因深度解析UNION操作要求前后两个查询的列数、列类型、字符集排序规则完全一致。当 DVWA 的数据库、表、字段使用了不同的字符集比如部分是utf8mb4_general_ci部分是latin1_swedish_ci就会触发这个字符集冲突导致联合注入直接失败。三、两种解决方案从根源解决 快速应急方案一永久修复修改配置一劳永逸步骤 1找到配置文件定位到 DVWA 的数据库配置文件路径为DVWA/dvwa/includes/DBMS/MySQL.php如果是 phpstudy 集成环境路径通常为phpstudy_pro/WWW/DVWA/dvwa/includes/DBMS/MySQL.php步骤 2修改数据库创建语句用编辑器记事本、VS Code、Notepad 均可打开MySQL.php检索关键词$create_db找到这行代码$create_db CREATE DATABASE {$_DVWA[db_database]};修改为注意空格和语法php运行$create_db CREATE DATABASE {$_DVWA[ db_database ]} COLLATE utf8_general_ci;;注意}和COLLATE之间必须有空格否则会语法错误✅ 关键COLLATE前面必须有空格且要写在{}外面不能写错拼写。保存文件后回到 DVWA Setup 页面点击「Create / Reset Database」重新创建数据库。步骤 3重置 DVWA 数据库打开 DVWA 靶场点击左侧菜单的Setup / Reset DB找到Create / Reset Database按钮点击reset database重置数据库重置完成后数据库会统一使用utf8_general_ci字符集从根源解决冲突四、解决页面样式残缺布局错乱页面不完整是因为 CSS/JS 静态资源加载失败按下面步骤修复1.强制刷新浏览器缓存○WindowsCtrl F5○MacCmd Shift R这会强制重新加载所有样式文件解决缓存导致的错乱。若有收获就点个赞吧

更多文章