Время ожидания соединения истекло при использовании doctrine migration (Symfony 5)

#php #symfony #doctrine

#php #symfony #доктрина

Вопрос:

Я пытаюсь выполнить миграцию с помощью этой команды

 php bin/console make:migration
 

Но он возвращает мне эту ошибку

 In AbstractMySQLDriver.php line 112:
                                                                                                                                                                                                                                   
An exception occurred in driver: SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le 
parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a 
échoué car l’hôte de connexion n’a pas répondu                                                                                                                                                                                                                 
                                                                                                                                                                                                                                   
In Exception.php line 18:
                                                                                                                                                                                                                      
SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le parti connecté n’a pas répondu 
convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion 
n’a pas répondu  
                                                                                                                                                                                                                      

In PDOConnection.php line 38:
                                                                                                                                                                                                                      
SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le parti connecté n’a pas répondu 
convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion 
n’a pas répondu  
                     
 

Итак, я попробовал этот код для проверки моего подключения к базе данных

 $em = $this->getDoctrine()->getManager();
$em->getConnection()->connect();
$conn = $em->getConnection();
var_dump($conn->isConnected());
 

Странно то, что когда я ввожу имя хоста (@xxxxx:3306), оно работает и возвращает bool(true).
Но когда я указываю IP-адрес (@xxx.xx.xxx.xx: 3306), он возвращает мне отказ в соединении.

Вот мой файл .env (не локальная база данных)

 DATABASE_HOST=xxxxx
DATABASE_PORT=3306
DATABASE_USER=user_xxxxx
DATABASE_PWD=pass_xxxxx
DATABASE_NAME=db_xxxxx
DATABASE_URL="mysql://user_xxxxx:pass_xxxxx@xxxxx:3306/db_xxxxx?serverVersion=5.5.68-MariaDB"
 

И вот моя доктрина.файл yaml

 doctrine:
dbal:
    driver: 'pdo_mysql'
    server_version: '5.5.68-MariaDB'
    charset: utf8mb4
    host: '%env(DATABASE_HOST)%'
    port: '%env(DATABASE_PORT)%'
    user: '%env(DATABASE_USER)%'
    password: '%env(DATABASE_PWD)%'
    dbname: '%env(DATABASE_NAME)%'
    url: '%env(resolve:DATABASE_URL)%'
                                                                                                                                                                                    
 

Может кто-нибудь помочь мне с этой ошибкой?

Комментарии:

1. Вы уверены в формате параметра serverVersion здесь? При использовании базы данных MariaDB здесь есть документ: symfony.com/doc/current/reference/configuration /… Более того, вам не нужно заполнять доктрину. параметры yaml, такие как хост, порт и т. Д., Поскольку они определяются параметром url

2. Запрос ПОКАЗЫВАЕТ ПЕРЕМЕННЫЕ ТИПА «%version%» возвращает мне следующее: innodb_version = 5.5.61-MariaDB-38.13 / version = 5.5.68-MariaDB

3. Я не сомневаюсь в этом, но здесь есть формат, специфичный для doctrine. В документе Doctrine -> » Если вы используете базу данных MariaDB, вы должны префиксить серверную версию с помощью mariadb- (например: mariadb-10.2.12) » doctrine-project.org/projects/doctrine-dbal/en/latest/reference /…

4. Хорошо, поэтому я поставил этот mariadb-5.5.68, но, к сожалению, ничего не меняет

5. Разрешено ли вашему пользователю входить в эту удаленную базу данных? Вы действительно используете «user_», «pass» и «db_» в качестве префикса или это здесь в качестве примера?

Ответ №1:

Хорошо, итак, я выполнял эту строку локально, я не знал, что мне нужно делать это на «стороне сервера». Извините, я изучил Symfony 4 дня назад и стараюсь изо всех сил.

 php bin/console make:migration
 

Теперь вопрос в том, как я не могу получить доступ к консоли моего сервера?

Спасибо за помощь