gpt4 book ai didi

mysql - Docker 中的 Symfony 3 - 奇怪的连接拒绝错误

转载 作者:行者123 更新时间:2023-11-29 07:04:27 31 4
gpt4 key购买 nike

正在开发 Symfony 3 项目。

我所有关于数据库工作的 CLI 教义突击队,例如:

doctrine:database:createdoctrine:schema:update --force

奇怪的是,我试图在 Controller 方法中从存储库中获取一些数据,但是当我尝试在浏览器中导航到有问题的页面时,我似乎遇到了“连接拒绝”错误。

下面是一些配置:

config.yml部分

doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci

orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true

parameters.yml

parameters:
database_host: 127.0.0.1
database_port: 3306
database_name: db_name
database_user: db_user
database_password: db_pw

** Controller **

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
return $this->render('default/index.html.twig');
}

/**
* @Route("/roedel", name="roedel")
*/
public function roedelAction()
{
return $this->render('default/roedel.html.twig');
}

/**
* @Route("/territorium", name="territorium")
*/
public function territoriumAction()
{
return $this->render('default/territorium.html.twig');
}

/**
* @Route("/dejacht", name="jacht")
*/
public function jachtAction()
{
$artists = $this->getDoctrine()
->getRepository('AppBundle:Artist')
->findAll();

return $this->render('default/jacht.html.twig', [
'artists' => $artists
]);
}
}

额外信息:

  • 使用 docker,因为这是一个测试用例,但我不确定这是否重要,因为 CLI 突击队确实可以工作。

最佳答案

当您尝试针对在 docker 容器内运行的 MySQL 运行 Symfony 的控制台命令时,有两种可能的情况。

您从本地计算机运行 symfony 命令,例如Mac、Windows 等 - 那么数据库主机必须是您的 docker 机器 IP(通常为 192.168.99.100,但取决于您的配置),并且您必须为 mysql 容器正确映射端口 3306 -有关端口映射的更多信息 https://docs.docker.com/compose/compose-file/#/ports .

您从“Web 应用程序”容器运行 symfony 命令 - 然后数据库主机设置为 mysql,并且您必须在“web 应用程序”和 mysql 容器 - 有关网络的更多信息 https://docs.docker.com/compose/compose-file/#/networks

对我来说更方便的是第二种方法,因为您不必更改数据库参数...

关于mysql - Docker 中的 Symfony 3 - 奇怪的连接拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275501/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com