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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

解決済

DjangoでMySQLに接続したい

YoshitakaOkada
YoshitakaOkada

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1回答

0評価

0クリップ

26閲覧

投稿2018/05/13 03:25

編集2022/01/12 10:58

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
さくらのVPS上で、Qiitaに手順のログを記しながら、簡単なデータベースアプリケーションを作ろうとしています

発生している問題・エラーメッセージ

「python manage.py makemigrations」のところでエラーが出てきます。
エラーの原因はPyMySQLで間違いなさそうですが、原因の領域の切り分けができない...

[op@ik1-336-28225 pj1]$ python manage.py makemigrations app1 Traceback (most recent call last): File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection self.connect() File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect self.connection = self.get_new_connection(conn_params) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 236, in get_new_connection return Database.connect(**conn_params) File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/__init__.py", line 90, in Connect return Connection(*args, **kwargs) File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 699, in __init__ self.connect() File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 935, in connect self._get_server_information() File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 1249, in _get_server_information packet = self._read_packet() File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 1005, in _read_packet % (packet_number, self._next_seq_id)) pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0 The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line utility.execute() File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 365, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **cmd_options) File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 332, in execute self.check() File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 364, in check include_deployment_checks=include_deployment_checks, File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 351, in _run_checks return checks.run_checks(**kwargs) File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/checks/registry.py", line 73, in run_checks new_errors = check(app_configs=app_configs) File "/home/op/anaconda3/lib/python3.6/site-packages/django/core/checks/model_checks.py", line 27, in check_all_models errors.extend(model.check(**kwargs)) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/models/base.py", line 1200, in check errors.extend(cls._check_fields(**kwargs)) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/models/base.py", line 1272, in _check_fields errors.extend(field.check(**kwargs)) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 894, in check errors = super().check(**kwargs) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 206, in check errors.extend(self._check_backend_specific_checks(**kwargs)) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 303, in _check_backend_specific_checks return connections[db].validation.check_field(self, **kwargs) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/validation.py", line 21, in check_field field_type = field.db_type(self.connection) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 648, in db_type return connection.data_types[self.get_internal_type()] % data File "/home/op/anaconda3/lib/python3.6/site-packages/django/utils/functional.py", line 36, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 133, in data_types if self.features.supports_microsecond_precision: File "/home/op/anaconda3/lib/python3.6/site-packages/django/utils/functional.py", line 36, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/mysql/features.py", line 65, in supports_microsecond_precision return self.connection.mysql_version >= (5, 6, 4) File "/home/op/anaconda3/lib/python3.6/site-packages/django/utils/functional.py", line 36, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 345, in mysql_version with self.temporary_connection() as cursor: File "/home/op/anaconda3/lib/python3.6/contextlib.py", line 82, in __enter__ return next(self.gen) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 576, in temporary_connection cursor = self.cursor() File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 255, in cursor return self._cursor() File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 232, in _cursor self.ensure_connection() File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection self.connect() File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection self.connect() File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect self.connection = self.get_new_connection(conn_params) File "/home/op/anaconda3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 236, in get_new_connection return Database.connect(**conn_params) File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/__init__.py", line 90, in Connect return Connection(*args, **kwargs) File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 699, in __init__ self.connect() File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 935, in connect self._get_server_information() File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 1249, in _get_server_information packet = self._read_packet() File "/home/op/anaconda3/lib/python3.6/site-packages/pymysql/connections.py", line 1005, in _read_packet % (packet_number, self._next_seq_id)) django.db.utils.InternalError: Packet sequence number wrong - got 45 expected 0

該当のソースコード

全体のソースはこちらに書いてあります。
https://github.com/duri0214/CentOS-Python

が、ほぼほぼPyMySQLの問題であるというアタリがついていますので、
PyMySQLに関連するソースを書きます。まずはフォルダツリーを。

[op@ik1-336-28225 pj1]$ tree . ┣ app1 ┃ ┣ __init__.py ┃ ┣ __pycache__ ┃ ┃ ┣ __init__.cpython-36.pyc ┃ ┃ ┣ admin.cpython-36.pyc ┃ ┃ ┣ models.cpython-36.pyc ┃ ┃ ┣ urls.cpython-36.pyc ┃ ┃ ┗ views.cpython-36.pyc ┃ ┣ admin.py ┃ ┣ apps.py ┃ ┣ migrations ┃ ┃ ┗ __init__.py ┃ ┣ models.py ┃ ┣ templates ┃ ┃ ┗ index.html ┃ ┣ tests.py ┃ ┣ urls.py ┃ ┗ views.py ┣ manage.py ┗ pj1 ┣ __init__.py ┣ __pycache__ ┃ ┣ __init__.cpython-36.pyc ┃ ┣ settings.cpython-36.pyc ┃ ┗ urls.cpython-36.pyc ┣ settings.py ┣ urls.py ┗ wsgi.py

そしてPyMySQL関連の記述をした箇所が、pj1/pj1 ディレクトリの settings.py です。
凡例:
★:追記箇所
##:コメントアウトした箇所(デフォルトで書いてあるもの)

# Database # https://docs.djangoproject.com/en/2.0/ref/settings/#databases ★import pymysql ★pymysql.install_as_MySQLdb() DATABASES = { ## 'default': { ## 'ENGINE': 'django.db.backends.sqlite3', ## 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), ## } ★ 'default': { ★ 'ENGINE': 'django.db.backends.mysql', ★ 'NAME': 'pythondb', ★ 'USER': 'python', ★ 'PASSWORD': 'python123', ★ 'HOST': '153.126.200.229', ★ 'PORT': '61203', ★ } }

試したこと

ひとまずpj1フォルダを消して、やりなおすことでエラーが出ない状態(Hello Djangoの状態)に戻せることはわかったので、いろんなチュートリアルみると makemigrationsはすんなり通る場所なのに環境が違うのかわからないけど大ハマりしています。作りたいものがもう迫っているのにスタートに立てないのはまずい...

補足情報(FW/ツールのバージョンなど)

・Linux(CentOS release 7.4)
・Apache 2.4.6
・MySQL 5.7
・Python 3.6(Anaconda)
・Django 2.0
・PyMySQL 0.8

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

m.ts10806
m.ts10806

2018/05/13 09:01

ご自身が書かれたコードをご提示ください。参考先はあくまで参考のもので、今問題が起きているコードは自身のものとして提示すべきです。https://teratail\.com/help/question-tips#questionTips3-5
YoshitakaOkada
YoshitakaOkada

2018/05/13 09:19

反応いただきありがとうございます。github先のコードは、現時点でさくらのサーバーにアップされている自分のコードのすべてです。問題があるコードを示せれば一番いいのでしょうけども恐らくソースコード自体の問題ではないと思っています(どちらかというとPyMySQLに関連する設定または環境の問題だと思っています)。「python manage\.py makemigrations app1」のコマンドが通らないのです\.\.。どのような情報を提示すればベストなのかも正直わかっておりませんが、ソースはすべて提示しているつもりです。
m.ts10806
m.ts10806

2018/05/13 09:26

外部サービスを利用するのはいいのですが何かでその外部サービスが利用できなくなった場合にコードを確認する術がなくなるので、コア部分だけでも結構ですので質問本文にご提示ください。
YoshitakaOkada
YoshitakaOkada

2018/05/13 09:31

なるほどそういうことでしたか。関連しそうな箇所を書きます

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。