douyue1481 2014-12-16 11:13
浏览 77
已采纳

无法看到mysql数据库时,composer安装失败

TL;DR: composer install fails when the post-install scripts can't see a MySQL server

I'm building a docker container for a Symfony application, and during the build I do something like this

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

Towards the end of the install, it fails with this

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.  

Now, I could use --no-scripts but then presumably I'd need to run composer install again after starting a container, and I'd like my container to be as ready as possible.

As I've not found many references to similar problems, there might be something in my application at fault, and I suspect I'll be answering my own question. My hope was that in describing it, I would figure it out. Alas, I haven't. Clues are welcome :)

  • 写回答

1条回答 默认 最新

  • douhuang1852 2014-12-16 17:56
    关注

    Doctrine introduced some code which tried to auto-detect things about the database quite eagerly.

    A workaround is simply to tell Doctrine the target server version, e.g.

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块