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

Linux Mint安装Saleor执行migrate命令报bytes-like object错误求解

问题根源

你遇到的报错有两层原因:

  1. 最核心的底层问题:你的Linux Mint系统上已经有进程占用了PostgreSQL默认的5432端口,导致Saleor的数据库容器无法绑定端口启动
  2. 额外的工具层面报错:你当前使用的docker-compose 1.25.0版本存在已知的兼容性bug,捕获端口占用错误时没有正确解码bytes类型的报错信息,才额外抛出了a bytes-like object is required, not 'str'的错误,这个报错掩盖了真正的端口占用问题。

解决步骤

第一步:处理5432端口占用

  • 先查询占用5432端口的进程:
sudo lsof -i :5432
# 也可以用ss命令查询
ss -tulpn | grep :5432
  • 如果你不需要用到本地运行的PostgreSQL服务,直接停止对应进程即可:
# 系统包安装的PostgreSQL可以用这个命令停止服务
sudo systemctl stop postgresql
# 不需要开机自启的话可以执行禁用命令
sudo systemctl disable postgresql
  • 如果你需要保留本地的PostgreSQL服务,就修改Saleor部署目录下的docker-compose.yml配置:找到db服务的ports配置项,把宿主机端口改成其他未被占用的端口,比如改为5433:5432,这样容器内部还是用5432端口,宿主机暴露5433端口即可避免冲突。

第二步:(可选)升级docker-compose避免后续误导性报错

旧版docker-compose 1.25.0的bug会导致很多真实错误被掩盖,建议升级到官方推荐的v2版本:

# 卸载系统自带的旧版docker-compose
sudo apt remove docker-compose
# 安装新版docker-compose-plugin
sudo apt install docker-compose-plugin
# 验证安装是否成功
docker compose version

升级后后续执行命令用docker compose(空格代替横杠)即可。

第三步:重新执行迁移命令

处理完端口占用问题后,重新运行迁移命令即可:

# 未升级旧版docker-compose使用这个命令
docker-compose run --rm api python3 manage.py migrate
# 升级到v2版本使用这个命令
docker compose run --rm api python3 manage.py migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:45:02