######django、ソケットを介してローカルMySQLサーバーにアクセスできません
前提・実現したいこと
runserverした時にローカルホストへアクセス出来るようにしたい。
djangoで作ったアプリをGAEをGoogle App Engineにデプロイしようと思っています。
その際にApp Engineスタンダード環境での Djangoの実行を参考に
gcloud sql instances describe [YOUR_INSTANCE_NAME]
に事前に作っておいたCloud SQL インスタンスの接続名を入れMySQLへ接続しました。
特に問題は無かったのですが、その後のpython manage.py runserverをしたところ
とエラーになってしまいました。以前runserverしていた時は問題なくローカルホストへアクセス出来ていました。
発生している問題・エラーメッセージ
python manage.py runserverした時のエラーメッセージが以下になります。
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/cloudsql/プロジェクト名:us-central1:〇〇-instance(作成したCloud SQL インスタンス)' (2)")
またGCP、App EngineのアプリケーションエラーにOperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)")とありました。
同じくGCPのオペレーションロギングのクエリ結果には
{ "textPayload": "Traceback (most recent call last): File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/django/db/backends/base/base.py\", line 219, in ensure_connection self.connect() File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/django/utils/asyncio.py\", line 26, in inner return func(*args, **kwargs) File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/django/db/backends/base/base.py\", line 200, in connect self.connection = self.get_new_connection(conn_params) File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/django/utils/asyncio.py\", line 26, in inner return func(*args, **kwargs) File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/django/db/backends/mysql/base.py\", line 234, in get_new_connection connection = Database.connect(**conn_params) File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/MySQLdb/__init__.py\", line 130, in Connect return Connection(*args, **kwargs) File \"/layers/google.python.pip/pip/lib/python3.8/site-packages/MySQLdb/connections.py\", line 185, in __init__ super().__init__(*args, **kwargs2) MySQLdb._exceptions.OperationalError: (2003, \"Can't connect to MySQL server on '127.0.0.1' (111)\")", "insertId": "609e8e320002a0e6b9e5b86d", "resource": { "type": "gae_app", "labels": { "version_id": "20210514t234717", "project_id": "really-site-313406", "zone": "asia-northeast1-1", "module_id": "default" } }, "timestamp": "2021-05-14T14:50:26.172262Z", "severity": "ERROR", "labels": { "clone_id": "00c61b117ce871cd7450a677b50311234c543f9dc2eb4c0e51c522002311a23d7343c4599c7151cf66b51fac54e3f9f612601bc56ab269bcfad519e0c5941986adebd2b409d5d9f23adfefbb53ed" }, "logName": "projects/really-site-313406/logs/stderr", "receiveTimestamp": "2021-05-14T14:50:26.268170929Z" }
とあり、127.0.0.1のMySQLサーバーに接続できませんと言われてしまいました。
該当のソースコード
setting.py
if os.getenv('GAE_APPLICATION', None) is None: #GAE 本番環境 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ['DB_NAME'], 'USER': os.environ['DB_USERNAME'], 'PASSWORD': os.environ['DB_USERPASS'], 'HOST': '/cloudsql/{}'.format(os.environ['DB_CONNECTION']), } } else: #開発環境 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ['DB_NAME'], 'USER': os.environ['DB_USERNAME'], 'PASSWORD': os.environ['DB_USERPASS'], 'HOST': '127.0.0.1', 'PORT': '3306', } }
試したこと
MySQLで"Can't connect to local MySQL server through..."って出た時の対処法や
Django の runserver 立ち上げたら "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" とかなる場合のメモに書かれているようにsetting.pyに'HOST': '127.0.0.1',を記述したり、mysql.server restartをしましたが変わらず。
補足情報(FW/ツールのバージョンなど)
macOS Big Surです。
python3.8.5 pyenv+venv環境です。
私自身、初心者でしてdjangoでアプリを作るのもデプロイするのも今回が初めてになります。
私の力では解決できず、皆さんのお力を借りたいと思い質問させていただきました。
拙い文章になりますが、解決法をどうか教えていただきたいです。
あなたの回答
tips
プレビュー