PDOException: SQLSTATE [HY000] [2054] Сервер запросил метод аутентификации, неизвестный клиенту (конвейер Bitbucket) - PullRequest
0 голосов
/ 16 мая 2018

Я запускаю конвейер bitbucket для выполнения всех модульных тестов с модулем PHP. Когда я выполняю тест на локальном, они все проходят. Но на конвейере bitbucket это всегда терпит неудачу. В этом случае тесты связаны с внешней службой, которую мы проверяем.

<?php

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

use MyService;

class MyTest extends TestCase
{
    /**
     * Test the dummies in this new system
     *
     * @return void
     */
    public function testDumies()
    {
        $games = DummyService::getDummies();
        $this->assertTrue(count($dummies) > 0);
    }

    public function testDummiesOfUser()
    {
        $dummies = DummyService::getDummiesOfUser('someemail@mail.com');
        $this->assertTrue(count($dummies) > 0);
    }
}

А вот сервис для получения манекенов

<?php
namespace App\Services;

class DummyService {

    /**
     * Get dummies
     *
     * @return void
     */
    public function getDummies() {
        $collection = [];

        $games = $this->getDummiesInUrl('http://my-project/api/v1/platform/dummies');
        foreach($dummies as $dummy) {
            $collection[] = $dummy;
        }

        return $collection;
    }

    /**
     * Retrieves the dummies in url
     *
     * @param string $endpoint
     * @return array
     */
    public function getDummiesInUrl($endpoint) {
        $client = new \GuzzleHttp\Client();
        $res = $client->request('GET', $endpoint);
        $body = $res->getBody();
        $body = json_decode($body, true);
        $data = $body['data'];
        $dummies = $data['dummies'];
        return $dummies;
    }

    /**
     * Returns the dummies of an user
     *
     * @param string $email
     * @return array
     */
    public function getDummiesOfUser($email) {
        $collection = [];
        $dummies = $this->getDummiesOfUserInUrl('http://myroute/api/v1/platform/dummies/user', $email);
        foreach($dummies as $d) {
            $collection[] = $d;
        }
        return $collection;
    }

    /**
     * Get gameplays in url
     *
     * @param string $endpoint
     * @param string $email
     * @return array
     */
    public function getDummiesOfUserInUrl($endpoint, $email) {
        $client = new \GuzzleHttp\Client();
        $res = $client->request('GET', $endpoint, ['query' => ['email' => $email]]);
        $body = $res->getBody();
        $body = json_decode($body, true);
        $data = $body['data'];
        $dummies = $data['dummiess'];
        return $dummies;
    }
}

Но когда это было проверено на конвейере bitbucket, я получил следующие ошибки:

PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client и Caused by PDOException:PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]

1 Ответ

0 голосов
/ 16 мая 2018

Очевидно, что с новой общедоступной версией mysql 8 многое изменилось.Поэтому, чтобы продолжить работу с вашими конвейерами, я отредактировал свой bitbucket-pipelines.yml и изменил версию изображения mysql с mysql на mysql: 5.7.22

definitions:
  services:
    mysql:
      image: mysql:5.7.22
      environment:
        MYSQL_DATABASE: 'homestead'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'homestead'
        MYSQL_PASSWORD: 'secret'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...