Scrutinizer で Unknown database というエラー

Symfony で作ったアプリケーション を Scrutinizer で composer install するときにこんなエラーで困った人います?

[Doctrine\DBAL\Exception\ConnectionException]                                        
An exception occured in driver: SQLSTATE[HY000] [1049] Unknown database 'symfony'    

[Doctrine\DBAL\Driver\PDOException]                                                  
SQLSTATE[HY000] [1049] Unknown database 'symfony'                                    

状況としては、アプリケーションで設定しているデータベースがないよってエラーですね。そのままです。

解決方法

どうすんねん、と少し悩んでいたのですが、.scrutinizer ファイルに以下を記述し解決。

build:
    dependencies:
         before:
            - mysql -e "CREATE DATABASE symfony"

こんな感じで composer install する前にデータベース作成を実行してくれます。

f:id:kseta:20160815191002p:plain

今回の設定はドキュメントの Build Configuration - Dependencies & Project Setup に書いてありました。ドキュメントのサンプルでは project_setup にデータベース作成のコマンドが記載されいますが、この project_setupdependencies、つまり composer install 後で実行されるようで、今回のエラーだと composer install 実行前にデータベースが作成されている必要があったため不適でした。dependencies > before に設定するのが正解のようです。

まとめ

日本語、いや英語でも How to の情報が圧倒的に少ない Scrutinizer ですが、基本的なところは柔軟に設定できそうなので上手く付き合っていきたいところです。