Gitlab Ci Laravel PDOException: SQLSTATE [HY000] [2002] Нет такого файла или каталога - PullRequest
0 голосов
/ 04 ноября 2018

Мои тесты laravel отлично работают на моей машине, но при запуске на gitlab-runner через докер я вижу это во всех моих тестах:

...
Caused by
PDOException: SQLSTATE[HY000] [2002] No such file or directory

/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:46
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:182
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:916
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:941
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:399
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:325
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:657
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:333
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:99
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:48
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:73
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:46
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/Container.php:572
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Command.php:183
/builds/project-0/vendor/symfony/console/Command/Command.php:255
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Command.php:170
/builds/project-0/vendor/symfony/console/Application.php:886
/builds/project-0/vendor/symfony/console/Application.php:262
/builds/project-0/vendor/symfony/console/Application.php:145
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Application.php:89
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Application.php:188
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:250
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php:136
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php:218
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php:55
/builds/project-0/tests/RefreshAndSeedDatabase.php:61
/builds/project-0/tests/RefreshAndSeedDatabase.php:20
/builds/project-0/tests/TestCase.php:21
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:71
...

Вот мой .env.testing:

...
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret
...

и мой .gitlab-ci.yml:

image: composer

stages:
- setup
- test
- deploy

phpunit:
  stage: test
  image: epcallan/php7-testing-phpunit:7.2-phpunit6

  services:
  - mysql:5.7

  variables:
    MYSQL_DATABASE: homestead
    MYSQL_ROOT_PASSWORD: secret

  before_script:
  - apt-get install -y libpng-dev libfreetype6-dev libjpeg62-turbo-dev
  - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
  - docker-php-ext-install gd

  script:
  - cp .env.testing .env
  - composer install
  - php artisan key:generate
  - php artisan passport:key
  - php vendor/bin/phpunit --coverage-text --colors=never --coverage-html=public/tests/coverage

Я пытался изменить DB_HOST на 127.0.0.1, как предложено здесь , но это не помогло.

Решение, которое работало над моими другими проектами laravel, - установить DB_HOST на mysql, что обычно работает, но на этот раз не работает. Я не уверен почему.

1 Ответ

0 голосов
/ 05 ноября 2018

Мне удалось исправить это, установив DB_HOST=mysql в .gitlab-ci.yml:

переменные:

    MYSQL_DATABASE: homestead

    MYSQL_ROOT_PASSWORD: secret

    DB_HOST: mysql

Это переопределяет переменные, установленные в .env.testing, чтобы тесты могли выполняться без дальнейшей настройки на хост-компьютере.

...