#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
Теперь вопрос в том, как я не могу получить доступ к консоли моего сервера?
Спасибо за помощь