質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

DjangoのDBの接続先をさくらインターネットのphpMyAdminに繋げる方法がわかりません

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 528

Msk07

score 14

DjangoのDBの接続先をさくらインターネットのphpMyAdminに繋げる方法がわかりません・

▪️ 端末
Mac

▪️ 使用ドライバ
pymysql, mysqlclient ※ 両方試しました

▪️ 試したこと
現状試したことは、以下の通りです。

  1. mysqlのlocalhost接続 → 成功
  2. Sequel Proを用いた接続 → 成功
  3. さくらインターネットのphpMyadmineへの接続 → 失敗

▪️ setting.pyのデータベース接続文字列

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'データベース名', # phpMyAdminで作成したデータベース名を記載しています
        'USER': 'ユーザ名', # [xxx.sakura.ne.jp]の[xxx]部分を記載しています
        'PASSWORD': 'xxxxxxx',
        'HOST': 'xxxxxx.xx.sakura.ne.jp',
        'PORT': '' # ここは空にしています
    }
}


▪️ manage.py
manage.pyの行頭に以下2行を加えています

import pymysql
pymysql.install_as_MySQLdb()

▪️ エラー詳細

$ python manage.py migrate
    execute_from_command_line(sys.argv)
  File "/anaconda3/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/anaconda3/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/anaconda3/lib/python3.7/site-packages/django/core/management/base.py", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/anaconda3/lib/python3.7/site-packages/django/core/management/base.py", line 350, in execute
    self.check()
  File "/anaconda3/lib/python3.7/site-packages/django/core/management/base.py", line 379, in check
    include_deployment_checks=include_deployment_checks,
  File "/anaconda3/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 59, in _run_checks
    issues = run_checks(tags=[Tags.database])
  File "/anaconda3/lib/python3.7/site-packages/django/core/checks/registry.py", line 71, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/anaconda3/lib/python3.7/site-packages/django/core/checks/database.py", line 10, in check_database_backends
    issues.extend(conn.validation.check(**kwargs))
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/mysql/validation.py", line 9, in check
    issues.extend(self._check_sql_mode(**kwargs))
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
    with self.connection.cursor() as cursor:
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/base/base.py", line 255, in cursor
    return self._cursor()
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/base/base.py", line 232, in _cursor
    self.ensure_connection()
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/anaconda3/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/base/base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/anaconda3/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/anaconda3/lib/python3.7/site-packages/pymysql/__init__.py", line 94, in Connect
    return Connection(*args, **kwargs)
  File "/anaconda3/lib/python3.7/site-packages/pymysql/connections.py", line 325, in __init__
    self.connect()
  File "/anaconda3/lib/python3.7/site-packages/pymysql/connections.py", line 630, in connect
    raise exc
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'xxxxxx.xx.sakura.ne.jp' (timed out)")

▪️ 最後に
個人的にはSSHの設定をsetting.pyのデータベース設定に付け加えないといけないのではないかと考えているのですが、
記載方法がわかりません。

お手数をおかけしますが、どうかご教授のほどお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Msk07

    2019/12/26 23:19

    >ではMySQLのホスト側でポート(デフォルトだと3306)がふさがってたりしないですかね?
    その線で調べて見たところ、さくらレンタルサーバの外部接続は遮断されているとのことでした...(>_<)
    https://help.sakura.ad.jp/206228781/

    SeaquelProで接続できたのは、ポートフォワーディングという技術を用いているみたいです
    https://www.tam-tam.co.jp/tipsnote/program/post14579.html

    下記のサイトにpythonでSSH接続するためのコードがありましたが、
    Djangoでの接続を考えるとsetting.pyのdatabase設定などが難しそうですね...
    https://blog.honjala.net/entry/2016/06/25/013131

    キャンセル

  • tatamyiwathy

    2019/12/27 10:17

    いまはDjango自体も手元のPCで動いているのですか?
    MySQLとDjangoがさくらインターネットのサイトで稼働するなら、MySQLとDjangoはローカルで通信するのでポートがふさがってても問題ありません。

    キャンセル

  • Msk07

    2019/12/27 13:26

    >いまはDjango自体も手元のPCで動いているのですか?
    Django自体も手元のPCで動いており、Herokuを使用してデプロイをおこなっているので
    さくらインターネットのサイトで動作させることができなさそうです。

    >MySQLとDjangoがさくらインターネットのサイトで稼働するなら、MySQLとDjangoはローカルで通信するのでポートがふさがってても問題ありません。
    そうなんですね!
    ならDjangoをさくらインターネットのサイトにデプロイすることも考えてみます。

    新味にご対応いただきありがとうございました!
    ずっと詰まっていた箇所だったので、本当に助かりました!

    キャンセル

回答 1

check解決した方法

0

さくらレンタルサーバの外部接続は遮断されているとのことでした...(>_<)
https://help.sakura.ad.jp/206228781/

SeaquelProで接続できたのは、ポートフォワーディングという技術を用いているみたいです
https://www.tam-tam.co.jp/tipsnote/program/post14579.html

下記のサイトにpythonでSSH接続するためのコードがありましたが、
Djangoでの接続を考えるとsetting.pyのdatabase設定などが難しそうですね...
https://blog.honjala.net/entry/2016/06/25/013131

tatamyiwathyさん、ご協力ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る