前提・実現したいこと
Web上でMySQlを動作させたいです。
SQliteを使った場合は正常に動作しましたが、MySQLに変えるとクエリの無いページのみ閲覧できる状態になりました。テーブルが存在していないからだろうと思いテーブルを作成する関数を呼び出すと、トップページの時点で下記のようなエラーが発生しました。
ローカル環境ではMySQLでも正常に動作しました。
発生している問題・エラーメッセージ
Internal Server Error 500 常に発生する場合: CGIのパーミッション設定に誤りがある。 / CGIのソースコードに問題がある。/ .htaccess の記述に誤りがある。
以下追記
Traceback (most recent call last): File: "/home/mydomain/mydomain.com/public_html/test/do_create.py", line 4, in init_db() File: "/home/mydomain/mydomain.com/public_html/test/database.py", line 21, in init_db Base.metadata.create_all(engine) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4287, in create_all ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2032, in _run_visitor with self._optional_conn_ctx_manager(connection) as conn: File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/contextlib.py", line 112, in __enter__ return next(self.gen) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2024, in _optional_conn_ctx_manager with self._contextual_connect() as conn: File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2226, in _contextual_connect self._wrap_pool_connect(self.pool.connect, None), File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2262, in _wrap_pool_connect return fn() File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 363, in connect return _ConnectionFairy._checkout(self) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 760, in _checkout fairy = _ConnectionRecord.checkout(pool) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 492, in checkout rec = pool._do_get() File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/impl.py", line 139, in _do_get self._dec_overflow() File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 154, in reraise raise value File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/impl.py", line 136, in _do_get return self._create_connection() File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 308, in _create_connection return _ConnectionRecord(self) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 437, in __init__ self.__connect(first_connect_check=True) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 639, in __connect connection = pool._invoke_creator(self) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 114, in connect return dialect.connect(*cargs, **cparams) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 451, in connect return self.dbapi.connect(*cargs, **cparams) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/pymysql/__init__.py", line 94, in Connect return Connection(*args, **kwargs) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/pymysql/connections.py", line 253, in __init__ self.ctx = self._create_ssl_ctx(ssl) File: "/home/mydomain/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/pymysql/connections.py", line 330, in _create_ssl_ctx ca = sslp.get('ca') AttributeError: 'str' object has no attribute 'get'
※File毎に改行しました。
該当のソースコード
init_db関数を実行すると上記のエラーが発生します。
python
1# database.py 2from sqlalchemy import create_engine 3from sqlalchemy.ext.declarative import declarative_base 4from sqlalchemy.orm import sessionmaker 5 6host = ホスト名 7database = データベース名 8user = ユーザー名 9password =パスワード 10 11engine = create_engine(f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8', convert_unicode=True) 12 13Session = sessionmaker(autocommit=False, autoflush=False, bind=engine) 14s = Session() 15 16Base = declarative_base() 17 18def init_db(): 19 import models 20 Base.metadata.create_all(engine)
python
1# do_create.py 2from database import init_db 3 4try: 5 init_db() 6except Exception as e: 7 import traceback 8 print(traceback.format_exc()) 9
補足
Anacondaを使ってpythonファイルを実行しています。
mysqlClientはAnacondaからインストールしました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/08 07:36
2019/08/08 07:44
2019/08/08 07:50
2019/08/08 08:27 編集
2019/08/08 07:56
2019/08/08 08:13
2019/08/08 08:33
2019/08/08 08:55
2019/08/08 09:07 編集
2019/08/08 09:19
2019/08/08 09:27
2019/08/09 04:23
2019/08/09 05:23
2019/08/09 06:36 編集
2019/08/09 06:46
2019/08/10 07:43
2019/08/10 08:52
2019/08/13 07:19
2019/08/13 07:59
2019/08/13 14:48
2019/08/13 15:01
2019/08/13 15:24
2019/08/13 22:22
2019/08/15 05:27
2019/08/15 09:14
2019/08/15 13:29 編集
2019/08/15 13:33