前回server erro500というエラーが出てしまった。
いろいろ調べてもわけがわからず質問することに。
・・・その結果。
DEBUGをTrueにしてみましょう。と言われた。そうかDEBUGがTrueにして本番環境(サーバー環境)でエラーを特定するのだな。
聞いて聞いて聞きまくってついにmysqlに変更
まずエラーメッセージ、
cryptography is required for sha_256_password or caching_sha2_password
エラーが出た。
pipでcryptographyを導入する。 which pip3.6でパスを調べて
/usr/local/bin/pip3.6 install cryptography --user
と打ったがだめ。
ちゃんと最初にsudoを付けて最後に--userはとること。userだとローカルにインストールされてしまう。
sudo /usr/local/bin/pip3.6 install cryptography
その後mysqlの状態を調べたのだがどうも芳しくないらしく一度サーバー環境のみmysqlをすべてアンインストールすることにした。
【MySQL】完全にアンインストールする方法: なんちゃってプログラマのぼやき
sudo yum -y remove mysql-server
mysqlと名前が付くものは
rpm -qa | grep -i mysql
でチェック全部アンインストールした。 余談だがこのときデータベースまで一緒に消してしまったらしくあとでサーバー環境で作り直したのだが・・・。
そしてmysql再インストール。サーバー環境の方ね!
grep 'temporary password' /var/log/mysqld.log ``` とコマンドをうつ最初に自動的に作られるrootユーザーのパスワードが書き込まれる。 [Note] A temporary password is generated for root@localhost: XXXXXXXXXX まずはroot権限でデフォルトパスワードで本番環境を起動させる。localhostという名前では権限が無いかと思ったが本番環境では自身がlocalhostなので問題なし。 settings.pyのパスワードを書き換える。ただし 'HOST': '', # 空欄でOK 'PORT': '', # 空欄でOK で良い。 ####mysql8.0ではデフォルトのrootユーザーではmysqlに接続できない teraterm上で再度デプロイをかけて、起動したためサイトを見に行ったところ、
(2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
とエラーが出現した、どうもmysql8.0ではデフォルトのrootユーザーのパスワードではではmysqlに接続できない,らしい。 まずパスワード無しでmysqlに接続するために ``` sudo systemctl stop mysqld.service sudo vim /etc/my.cnf ↓ [mysqld]の一番下に追記 skip-grant-tables sudo systemctl start mysqld.service
vimは操作が難しいのでこのサイトを参考にした。
TEMPEST: Fedoreの技 viでwなしで上書きするには
エラーが出るので:wq!で保存するというのが大変曲者だった。
mysql> FLUSH PRIVILEGES; mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新パスワード';
でパスワードを変更する必要(別にデフォルトのものを再利用しても大丈夫そうだが)があるようだ。rootユーザーの名前は変更する必要が無い。 でこのままデプロイしたところエラー
(2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
が発生。
sudo vim /etc/my.cnf
で記載した
skip-grant-tables
をvimで削除する必要があったらしい。
その後sudo systemctl restart mysqld.service
として再度デプロイしたが
(1049, "Unknown database 'sample'")
これはデータベースを依然消してしまったことが原因で先ほど設定した新パスワードでmysqlに接続し、
CREATE DATABASE db_name;
(db_nameに好きなデータベース名を入れる)でデータベースを作成した。
ついにサーバー環境でmysqlが作動
デプロイするとまたエラーが発生
(1146, "Table 'sample.polls_question' doesn't exist")
これはマイグレーションの問題とさすがにわかった。
sudo python3.6 manage.py migrate
で解決。すでにmigrationsのファイルはあるのでmake migrationsは不要だった。
これでとりあえずサーバー環境ではmysqlに接続できるようになった。ローカル環境では試してないのでやってみようと思う。
djangoのデータベースをsqlite3からmysqlに切り替えるまで2 - ニートがベルマーレ好きすぎて会社起こしたけど今後は未定
djangoのデータベースをsqlite3からmysqlに切り替えるまで2 - ニートがベルマーレ好きすぎて会社起こしたけど今後は未定
djangoのデータベースをsqlite3からmysqlに切り替えるまで3 - ニートがベルマーレ好きすぎて会社起こしたけど今後は未定