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

Unity构建后数据库连接丢失问题求助(OpenServer+PHP+MySQL)

Unity构建后无法连接本地数据库(OpenServer+PHP+MySQL)

问题描述

我在Unity中开发了对接外部数据库的项目,使用OpenServer搭建本地服务器,项目采用OpenGL渲染模式。Unity编辑器内可正常连接数据库,但构建后的程序连接失效。

  • Unity端连接代码:
WWWForm form = new WWWForm();
form.AddField("QCode", StaticData.CodeQuest);

WWW www = new WWW("http://localhost",form);

yield return www;
  • PHP端PDO连接代码:
$pdo = new PDO('mysql:host=localhost;dbname=Quest-DB;charset=utf8;','root', '123456');

OpenServer日志显示编辑器和构建程序都发送了请求,但构建后仍无法正常连接。

排查与解决方案

1. 替换localhost为本地IP地址

构建后的程序运行时,localhost可能指向程序自身的沙箱环境(尤其是Windows打包程序),而非你的本地服务器。将Unity代码中的http://localhost改为你的本地IPv4地址(可通过cmd输入ipconfig查看),比如http://192.168.1.100。同时可以测试将PHP中的localhost替换为该IP,确保连接路径一致。

2. 替换已弃用的WWW类

Unity的WWW类已被标记为弃用,兼容性较差且错误排查不便,建议改用UnityWebRequest,同时添加错误捕获逻辑:

WWWForm form = new WWWForm();
form.AddField("QCode", StaticData.CodeQuest);

using (UnityWebRequest www = UnityWebRequest.Post("http://你的本地IP地址", form))
{
    yield return www.SendWebRequest();

    if (www.result != UnityWebRequest.Result.Success)
    {
        Debug.LogError(www.error); // 输出具体错误信息,直接定位问题
    }
    else
    {
        Debug.Log("请求成功: " + www.downloadHandler.text);
    }
}

3. 检查OpenServer与防火墙设置

  • 确认OpenServer的80端口(默认端口)未被其他程序占用,可在OpenServer控制面板中切换端口测试。
  • 检查Windows防火墙是否允许构建后的程序访问网络,或临时关闭防火墙测试连接。
  • 确认OpenServer根目录的读写权限,确保构建程序能正常访问PHP脚本。

4. 查看PHP错误日志

OpenServer收到请求不代表PHP执行正常,查看PHP错误日志(路径一般为OpenServer\modules\php\[你的PHP版本]\logs),排查是否存在PDO连接错误,比如:

  • MySQL服务未启动
  • 数据库名称、用户名或密码错误
  • 字符集不兼容

5. 确认MySQL连接权限

检查root用户是否允许从本地IP连接,若使用自定义IP而非localhost,需在MySQL中授权:

GRANT ALL PRIVILEGES ON `Quest-DB`.* TO 'root'@'你的本地IP' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

6. 检查Unity Player设置

在Unity编辑器的Player Settings > Other Settings > Configuration中,将Internet Access设置为Require,确保构建后的程序拥有网络访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:03:14