无法看到 mysql 数据库时作曲家安装失败

Posted

技术标签:

【中文标题】无法看到 mysql 数据库时作曲家安装失败【英文标题】:composer install fails when unable to see mysql database 【发布时间】:2015-02-14 16:29:41 【问题描述】:

TL;DR:当安装后脚本看不到 MySQL 服务器时,composer 安装失败

我正在为 Symfony 应用程序构建一个 docker 容器,在构建过程中我做了类似的事情

RUN export SYMFONY_ENV=prod && \
  composer install --prefer-dist --optimize-autoloader

在安装结束时,它失败了

Generating optimized autoload files


  [Doctrine\DBAL\Exception\DriverException]                                                                  
  An exception occured in driver: SQLSTATE[HY000] [2003] Can't connect to mysql server on '127.0.0.1' (111)  

  [Doctrine\DBAL\Driver\PDOException]                                        
  SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)  

  [PDOException]                                                             
  SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)  


Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-install-cmd event terminated with an exception

  [RuntimeException]                                                         
  An error occurred when executing the "'cache:clear --no-warmup'" command.  

现在,我可以使用--no-scripts,但大概我需要在启动容器后再次运行composer install,并且我希望我的容器尽可能准备好。

由于我没有找到很多类似问题的参考资料,因此我的应用程序中可能存在问题,我怀疑我会回答我自己的问题。我希望在描述它时,我会弄明白。唉,我没有。欢迎提供线索:)

【问题讨论】:

您的项目中没有使用数据库连接? 是的,但是在构建容器时未知/可用 here 在作曲家任务之前首先安装/启动服务。希望对您有所帮助 【参考方案1】:

Doctrine 引入了一些代码,这些代码非常热切地尝试自动检测有关数据库的内容。

解决方法是简单地告诉 Doctrine 目标服务器版本,例如

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                dbname:   Symfony2
                user:         root
                password: null
                host:         localhost
                driver:       pdo_mysql
                server_version: 5.6

见https://github.com/doctrine/DoctrineBundle/issues/351#issuecomment-75456547

【讨论】:

在没有安装后脚本尝试连接到数据库的情况下,您是否有幸安装了依赖项?

以上是关于无法看到 mysql 数据库时作曲家安装失败的主要内容,如果未能解决你的问题,请参考以下文章

全新安装退出代码 127

作曲家安装/更新失败

作曲家安装失败,返回码 1

作曲家:找不到命令

Orocommerce 作曲家安装失败

从5.5作曲家更新到laravel 5.6失败