首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“名称解析中的临时失败”:Symfony 5.3与Doctrine和Docker连接到MariaDB

“名称解析中的临时失败”:Symfony 5.3与Doctrine和Docker连接到MariaDB
EN

Stack Overflow用户
提问于 2021-06-19 11:42:24
回答 2查看 1.8K关注 0票数 3

我已经在docker (nginx、php和mariadb)中运行了dev环境,并尝试在symfony中创建一个带有理论的数据库。当我运行php bin/console doctrine:database:create时,我会得到以下错误:

代码语言:javascript
复制
[critical] Error thrown while running command "doctrine:database:create". Message: "An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution"

我在.env中的配置如下:

代码语言:javascript
复制
DATABASE_URL="mysql://admin:symfony-admin@db/symfony_test?serverVersion=mariadb-10.1"

这是我的docker-compose.yml

代码语言:javascript
复制
version: "3.6"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./code:/code
      - ./site.conf:/etc/nginx/conf.d/site.conf
    depends_on:
      - php

  php:
    build: .
    volumes:
      - ./code:/code 
    links:
      - db

  db:
    image: mariadb:latest
    restart: always
    ports:
      - "33006:3306"
    volumes:
      - ./db:/docker-entrypoint-initdb.d/
    environment:
      MYSQL_ROOT_PASSWORD: 'symfony-root-pwd'
      MYSQL_DATABASE: 'symfony_db'
      MYSQL_USER: 'admin'
      MYSQL_PASSWORD: 'symfony-admin'

我还使用adminer访问数据库,在那里登录工作。

有人知道为什么我不能建立一个有教义的数据库吗?

干杯,

迈克尔

解决方案:

我自己找到了解决办法。命令php bin/console doctrine:database:create需要在php容器中运行,而不是在本地终端中运行。所以首先是docker-compose exec php /bin/bash,然后是php bin/console doctrine:database:create

EN

回答 2

Stack Overflow用户

发布于 2021-06-19 12:58:42

你可以添加

代码语言:javascript
复制
links:
      - db

php服务配置,并将DATABASE_URL更改为DATABASE_URL="mysql://admin:symfony-admin@db/symfony_db?serverVersion=mariadb-X.X.X"

服务db将公开给php服务,而在php容器中,db将成为到db服务的主机(链接)。

票数 2
EN

Stack Overflow用户

发布于 2021-07-19 23:26:54

通常,这个问题在密码中。因为连接字符串是一个URL,所以对特殊字符进行编码,认为它是一个参数。

要清楚地说明,解决这一问题需要以下两个步骤中的一个:

  1. 密码的URL编码,以便引用(%编码)字符,例如在.env.local或.env中:

例如,将字符#替换为%23 (其编码版本)。

-DATABASE_URL=mysql://user:special#password@localhost:3306/db?serverVersion=8.0 +DATABASE_URL=mysql://user:special%23password@localhost:3306/db?serverVersion=8.0

  1. 或删除config/packages/doctrine.yaml中的解析:从doctrine.dbal.url中删除

原则: dbal: url:%env(DATABASE_URL)%

第一个对我有用!

答案参考:畸形参数"url“Symfony 5不接受特殊字符。#35568

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68046453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档