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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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カーネル上に構築されています。

Q&A

解決済

1回答

1755閲覧

DjangoでMySQLに接続したい

YoshitakaOkada

総合スコア8

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カーネル上に構築されています。

0グッド

0クリップ

投稿2018/05/13 03:25

編集2018/05/13 09:53

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
さくらの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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoshitakaOkada

2018/05/13 09:19

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

2018/05/13 09:26

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

2018/05/13 09:31

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

回答1

0

自己解決

原因は
DjangoとPyMySQLの相性問題だったようです。
mysqlclientに変えたら解決しました。
同じ症状にあたってるひとの役に立つといいね

投稿2018/05/30 10:12

YoshitakaOkada

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問