Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机';db';(2) 我已将django web应用程序对接 每当我运行“docker compose up”时,一切都很好,它就会打开 局部 但是当我运行“python manage.py runserver”时,它会弹出一个错误 mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机“db”(2) 这与我将其部署到azure时显示的错误相同 docker compose在本地正常运行,web应用程序运行良好_Python_Mysql_Django_Azure_Docker - Fatal编程技术网

mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机';db';(2) 我已将django web应用程序对接 每当我运行“docker compose up”时,一切都很好,它就会打开 局部 但是当我运行“python manage.py runserver”时,它会弹出一个错误 mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机“db”(2) 这与我将其部署到azure时显示的错误相同 docker compose在本地正常运行,web应用程序运行良好

mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机';db';(2) 我已将django web应用程序对接 每当我运行“docker compose up”时,一切都很好,它就会打开 局部 但是当我运行“python manage.py runserver”时,它会弹出一个错误 mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机“db”(2) 这与我将其部署到azure时显示的错误相同 docker compose在本地正常运行,web应用程序运行良好,python,mysql,django,azure,docker,Python,Mysql,Django,Azure,Docker,这是我的docker-compose.yml文件 services: db: image: mysql ports: - '3306:3306' environment: MYSQL_DATABASE: 'app' MYSQL_USER: 'root' MYSQL_PASSWORD: 'aspilos' MYSQL_ROOT_PASSWORD: 'aspilos' web: build: . command: python ma

这是我的docker-compose.yml文件

services:
db:
  image: mysql
  ports:
    - '3306:3306'
  environment:
     MYSQL_DATABASE: 'app'
     MYSQL_USER: 'root'
     MYSQL_PASSWORD: 'aspilos'
     MYSQL_ROOT_PASSWORD: 'aspilos'
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/aspilos
  ports:
    - "8000:8000"
  depends_on:
    - db
这是我的utils.py文件

import mysql.connector
mydb = mysql.connector.connect(
  host="db",
  user="root",
  passwd="aspilos",
  database="aspilos_log",
  auth_plugin="mysql_native_password"
) 
 mycursor = mydb.cursor()
 mycursor.execute("SELECT CONCAT('+', PHONE_NUMBER) FROM category2")
 results = mycursor.fetchall()
 for i in zip(*results):
 number = list(i)
 number1 = '+2348076548894'
 print (number)
这是我的settings.py文件

DATABASES = {
 'default': {
   'ENGINE': 'django.db.backends.mysql',
   'NAME': 'app',
   'USER': 'root',
   'PASSWORD': 'aspilos',
   'HOST': 'db',
   'PORT': '3306',
  },
}
“docker compose up”一切正常,它在本地打开,但当我运行
“python manage.py runserver”
时,它会弹出一个错误
mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机'db'(2)

数据库主机
DB
将仅在中工作。您可以在docker compose内部使用服务名称连接到其他服务,但在docker网络外部它将变得无效

docker compose中可能出现的一个常见错误是,当数据库尚未准备好,但应用程序尝试连接时,可能会出现一个快速而肮脏的修复程序

 webapp:
   build: .
   image: webapp
   command: sh -c "sleep 30s ; python /app/manage.py"
但是您应该实现重试逻辑

要处理上述错误,您需要主机或系统能够解析的DNS

mydb = mysql.connector.connect(
  host="REACHABLE_IP",
....
) 
您可以通过DB连接来验证可访问IP,它可以

MySQL -h REACHABLE_IP -u db_user -pPass

检查docker compose输出中数据库的容器名称,并将其用作主机名。它不起作用。数据库的容器名为aspilos_db_1。我现在尝试了,它带来了另一个错误mysql.connector.errors.DatabaseError:2005(HY000):未知的mysql服务器主机'aspilos_db_1'(0),然后尝试在Yaml中显式设置主机名并检查容器中的DNS解析。我该如何做呢?这是您的主机>
'host':'db',
由于主机名是
aspilos\u db\u 1
,您必须为
aspilos\u db\u 1
更改此
db
,这里有一个注意事项,请记住Docker使用foldername\u servicename\u servicenumber来命名它,我如何知道可访问的ip请如何运行脚本?您检查系统IP以使其工作,localhost不工作。我的系统的IP地址是192.168.0.1,但它不工作。当您将其部署到azure时,您是否运行了
docker compose up
?您可以验证mysql客户端的db连接吗?数据库正在运行吗<代码>您应该运行docker compose up`?