0

Kiwi 版本:7.2
我在 Windows 10 主机上运行 CentOS 8 VirtualBox。

基本问题似乎是 kiwi_web 无法连接到 kiwi_db。

当我运行命令时:

docker exec -it kiwi_web /Kiwi/manage.py migrate

我收到错误消息(最后的完整响应):

MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

如果我登录 kiwi_web 并运行“/Kiwi/manage.py migrate”,我也会收到此错误。

运行 createsuperuser 命令时出现相同的错误:

docker exec -it kiwi_web /Kiwi/manage.py createsuperuser

将mysql命令行添加到kiwi_web后,当我运行时:

mysql -h kiwi_db -u kiwi -p

我得到错误:

ERROR 2003 (HY000): Can't connect to MySQL server on 'kiwi_db' (113)

如果我使用不同的主机名,例如 kiwi_db 或 IP 地址,则会出现同样的错误。

我认为我在安装过程中没有偏离https://kiwitcms.readthedocs.io/en/latest/installing_docker.html上的说明,除了我尝试打开 Kiwi 页面并在运行之前得到 500 内部服务器错误迁移命令。

关于如何克服这个问题的任何想法?

谢谢,

..罗恩

数据:

我运行命令时的完整响应是:

# docker exec -it kiwi_web /Kiwi/manage.py migrate
Traceback (most recent call last):
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Kiwi/manage.py", line 12, in <module>
    execute_from_command_line(sys.argv)
  File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 361, in execute
    self.check()
  File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 390, in check
    include_deployment_checks=include_deployment_checks,
  File "/venv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 64, in _run_checks
    issues = run_checks(tags=[Tags.database])
  File "/venv/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/venv/lib/python3.6/site-packages/django/core/checks/database.py", line 10, in check_database_backends
    issues.extend(conn.validation.check(**kwargs))
  File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 9, in check
    issues.extend(self._check_sql_mode(**kwargs))
  File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
    with self.connection.cursor() as cursor:
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 256, in cursor
    return self._cursor()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 233, in _cursor
    self.ensure_connection()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/venv/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

以及来自 createsuperuser 命令的完整响应:

# docker exec -it kiwi_web /Kiwi/manage.py createsuperuser
Traceback (most recent call last):
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Kiwi/manage.py", line 12, in <module>
    execute_from_command_line(sys.argv)
  File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/venv/lib/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 61, in execute
    return super().execute(*args, **options)
  File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 363, in execute
    self.check_migrations()
  File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 453, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/venv/lib/python3.6/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/venv/lib/python3.6/site-packages/django/db/migrations/loader.py", line 212, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/venv/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 73, in applied_migrations
    if self.has_table():
  File "/venv/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 56, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 256, in cursor
    return self._cursor()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 233, in _cursor
    self.ensure_connection()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/venv/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")
4

1 回答 1

0

你好,首先新年快乐。

我在 Windows 10 主机上运行 CentOS 8 VirtualBox。

你的意思是说你有 Docker 在 CentOS VM 内运行吗?

基本问题似乎是 kiwi_web 无法连接到 kiwi_db。

假设 Docker 在 VM 中运行,并且您正在尝试运行 Kiwi TCMS 容器,那么:

  • 是否docker-compose up将 2 个容器抬起来?您能否验证它们是否存在,例如docker ps

...在运行迁移命令之前,我尝试打开 Kiwi 页面并收到 500 内部服务器错误。

  • 这里的 500 可能是因为没有数据库(没有表,没有连接,还有别的)。如果您看到带有 Kiwi TCMS 品牌的错误页面或任何意味着kiwi_web容器正在运行的东西。你能确认这个容器正在运行吗?您应该被重定向到https://localhost(或 FQDN,IP 地址),并且该页面应该使用我们自己的自签名 SSL 证书。是这样吗?

您显示的所有内容看起来都在运行 Web 容器,但没有运行数据库容器?您可以尝试docker exec ... /bin/bash对每个容器进行检查以确保它们在那里。如果发生这种情况,请尝试任何适用于 Linux 的网络工具(例如 ping、netstat),以查看两个容器之间是否存在网络连接。它们应该在同一个虚拟网络上(在 Docker 术语中),并且它们的名称也应该作为同一个网络上的主机名。

于 2020-01-03T21:44:09.657 回答