#mysql #database #docker #symfony #doctrine
#mysql #База данных #docker #symfony #доктрина
Вопрос:
По какой-то причине, когда я создаю функцию, это создает новую статью. Я получаю эту ошибку:
An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused
Но когда я запускаю, например:
> php bin/console doctrine:migrations:migrate
Соединение, похоже, работает. Возможно, есть какая-то проблема с моими изображениями docker. Вот контроллер с функцией создания
/**
* @param Request $request
* @return Response
* @Route("article/create", name="app_article_create")
*/
public function createArticleForm(Request $request) : Response
{
$article = new Article();
$createArticleForm = $this->createForm(ArticleType::class, $article);
$createArticleForm->handleRequest($request);
if ($createArticleForm->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
return $this->redirectToRoute('app_home_page');
}
return $this->render('newArticle.html.twig', ['createArticleForm' => $createArticleForm->createView()]);
}
Вот мой DATABSE_URL в файле .env для symfony:
DATABASE_URL="mysql://appuser:apppassword@127.0.0.1:3306/symfonyBlogDB?serverVersion=mariadb-5.7"
Мой docker-compose.yml
services:
database:
build:
context: ./database
environment:
- MYSQL_DATABASE=${DATABASE_NAME}
- MYSQL_USER=${DATABASE_USER}
- MYSQL_PASSWORD=${DATABASE_PASSWORD}
- MYSQL_ROOT_PASSWORD=${DATABASE_ROOT_PASSWORD}
ports:
- "3306:3306"
volumes:
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
- ./database/data:/var/lib/mysql
И мой файл .env для docker
DATABASE_NAME=symfonyBlogDB
DATABASE_USER=appuser
DATABASE_PASSWORD=apppassword
DATABASE_ROOT_PASSWORD=root
Комментарии:
1. Попробуйте это: DATABASE_URL=»mysql://appuser:apppassword@database/symfonyBlogDB?serverVersion=mariadb-5.7 » где database — это имя вашей службы базы данных
Ответ №1:
Проблема была в docker-compose.yml
. Вместо того, чтобы использовать адрес локального хоста, я должен изменить его на database
, который является именем моей службы базы данных. Большое спасибо за помощь.