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

Python2.7升级后游戏MongoDB/PostgreSQL配置及Unity登录报错求解

问题解答

配置相关疑问解答

  • 疑问1:th_frontend、e5e6af02519f110093d76dcc1f55b25d不是PostgreSQL的用户名和密码。这两个值是前后端服务内部通信的鉴权凭证,对应后端配置里的FRONTEND_USERNAME和FRONTEND_PASSWORD,前端调用后端接口时需要用这两个值做身份校验,和PostgreSQL的访问凭证无关。PostgreSQL的凭证是Frontend配置里DB_开头的四个参数。
  • 疑问2:MongoDB找不到tdta库的原因:你当前的配置里DB_开头的参数是PostgreSQL的连接配置,MongoDB的配置只有MONGODB_HOST和MONGODB_PORT两项,如果你的MongoDB开启了身份认证,现有配置没有传入MongoDB的用户名、密码和认证库,pymongo新版本默认不会自动完成认证,自然无法访问tdta库。另外还要检查MongoDB服务是否放开了10.0.0.1地址的访问权限、27017端口是否通、你使用的MongoDB账号是否有tdta库的访问权限。
  • 疑问3:BIND_ADDRESS = "0.0.0.0"表示前端服务监听服务器所有可用的网卡,不管是内网还是公网IP的请求都可以接收;BIND_PORT = 7071表示前端服务对外提供接口的端口为7071。注意后端配置里的FRONTEND_PORT当前写的是7070,和前端配置不匹配,需要修改为7071,否则前后端无法通信。

运行报错修复

报错1:TypeError: Unicode-objects must be encoded before hashing

这是Python2升级到Python3的典型语法兼容问题,Python3中字符串默认是Unicode类型,md5哈希只接受bytes类型输入。修改Frontend.py第915行的代码即可:
把

user = authenticate(db, request_dict["username"], md5(request_dict["password"]).hexdigest())

修改为

user = authenticate(db, request_dict["username"], md5(request_dict["password"].encode('utf-8')).hexdigest())

报错2:AttributeError: 'NoneType' object has no attribute 'user_id'

该报错是因为authenticate方法没有查询到对应用户,返回了None,后续代码没有做判空就直接访问了user.id属性,按以下步骤排查修复:

  1. 先检查Unity端发起请求时传的用户名是否正确:日志里显示的是auth for user test1,但你说测试账号是user1,确认有没有传错用户名。
  2. 登录PostgreSQL的tdta库,执行SELECT * FROM users WHERE username = 'user1',确认是否存在该用户记录,且密码字段存储的哈希值是否为ee11cbb19052e40b07aac0ca060c23ee(user密码的md5值)。
  3. 确认你调整后的PostgreSQL连接凭证(DB_USERNAME、DB_PASSWORD等)是否有users表的查询权限。

额外优化点

开头的Secret key missing for non-string Cookie警告可以通过在Frontend配置中添加SECRET_KEY参数解决,设置一个任意复杂字符串作为session加密密钥即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 08:54:04