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

Shopware CLI执行命令时数据库连接失败问题求助

解决Shopware CLI数据库连接报错SQLSTATE[HY000] [2002]的方案

核心原因

Web环境与CLI环境的数据库连接逻辑存在差异:Web端可能默认使用TCP连接,而CLI端若配置中写localhost,PHP会优先尝试Unix套接字连接,当套接字路径配置错误或不存在时就会触发该报错。

具体解决步骤

1. 修正.env文件的数据库连接地址

打开项目根目录下的.env文件,确保DATABASE_URL使用IP地址而非localhost,强制走TCP连接:

DATABASE_URL=mysql://数据库用户名:数据库密码@127.0.0.1:3306/数据库名?serverVersion=8.0&charset=utf8mb4

修改后执行以下命令刷新配置缓存:

bin/console cache:clear

2. 强制在Doctrine配置中指定TCP连接参数

若.env修改无效,直接编辑config/packages/doctrine.yaml,明确配置TCP连接参数,覆盖默认的套接字逻辑:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                # 保留原有的url配置,同时强制指定TCP参数
                url: '%env(resolve:DATABASE_URL)%'
                host: '127.0.0.1'
                port: 3306
                dbname: '你的数据库名'
                user: '你的数据库用户名'
                password: '你的数据库密码'
                driver: 'pdo_mysql'
                server_version: '8.0' # 替换为你的MySQL版本
                charset: utf8mb4

保存后再次清理缓存:

bin/console cache:clear

3. 检查CLI环境的PHP配置

如果上述方法仍无效,检查PHP CLI的套接字配置是否与Web环境不一致:

  • 执行php -i | grep "default_socket"查看CLI的MySQL套接字路径
  • 在Web端执行phpinfo()查看Web环境的套接字路径
  • 若路径不同,修改CLI的php.ini文件(可通过php --ini找到路径),将mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket三个参数的值改为Web环境的正确路径。

4. 确保CLI使用与Web一致的环境

执行CLI命令时,明确指定运行环境(比如生产环境):

bin/console plugin:list --env=prod

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:03:37