解決編は3なので参考にしたい方は3まで飛ばして!
先日こんなサイトを立ち上げました。
これ更新時に問題があって普通にプログラムを上書きしてしまうとデータベースも上書きされてしまい、せっかく本番環境で皆様からとったアンケート結果がローカルのものに書き換わってしまいます。
これを解決するのにいろいろ調べていたところ、
MySQLやMariaDB, PostgreSQL等を利用することです。
これらは、db.sqlite3のようなファイルを作るタイプのものではありません。サーバー上にデータベースを構築し、それに対してネットワーク越しに接続します。
何が可能になるかといいますと、手元のローカル環境からでもサーバー側のDjangoからも、同一のデータベースに接続することができます。db.sqlite3のようなファイルをバージョン管理に含める必要はなくなり、データベースの内容をいちいち同期させたり、バージョン管理のことを気にする必要はなくなります。
手元のローカル環境からでも本番用のデータが自動的に取れるので、手元の環境で本番の実際のデータを使いながら開発もしやすくなります。
頑張って導入してみよう!!!
苦労の連続
とはいえwindowsでプログラミングしているので環境構築はいつも苦労してしまいます。
まずはこちらのサイトで
MySQL :: MySQL Community Downloads
「MySQL Installer ( Windows )」→MySQL Installer→(mysql-installer-web-community-8.0.13.0.msi)の方をインストール
という手順でmysqlをインストール。
基本はこれ!
MySQLのダウンロードとインストール - Windows環境 - MySQL入門 - Webkaru
結構エラーが出るんですよね~。
このサイトを見ると飛ばしていいところ、ダメなところが参考になるかと。
環境構築 004 Windows版MySQLインストール - Qiita
そしてコマンドプロンプトでsqlを叩くと・・・。
エラーが出ます!!!
pathを通してください!!
環境変数 「Path」を設定する - MySQL Documents - Project Group
いよいよdjangoとmysqlを操作接続
ここからが本番django側の設定です。
Python3系でDjangoでMySQLに接続する | CodeLab
こちらのサイトを見ながら行います。djangoの方の設定は問題なし。
見たまま書くだけです。
net start mysql56
エラーが出ます。
あとたまにエラー5とかいうエラーが出ます。管理者権限の無い状態で操作しているのが原因で
対処法
スタートメニュー⇒アクセサリ⇒コマンドプロンプトを右クリックして「管理者として実行」を選択する。
Windows8の場合は、スタート画面上で右クリック⇒画面下部に表示される「すべてのアプリ」を選択 ⇒「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する。
管理者としてコマンドプロンプトを実行後、もう一度コマンドを実行する。
これでなんとかなります。
ただwindowsはそもそもコマンドプロンプトでmysqlを立ち上げるのではありません。
いるかさんでオンオフします。
オンにすれば
mysql -u root -p
でパスワードを入力すればmysqlに入れます。
後はこのサイトの
データベースを作成(データベース名は sample)以降を参考にデータベースを作ります。
mysql> show databases;
mysql> create database sample;
mysql> show databases;
$ pip install pymysql
$ pip freeze -l
これでmigrateすればおっけーっぽいです!!!いくぞ!!
python manage.py migrate
エラーーーーーーーーーーーーーーーーーーーーーーーーー!!!
django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localho
st' (using password: NO)")
ここまできてこれですか・・・。ふぇぇ。
んでどう解決したか
解決は海外のサイトで・・・。pythonを勉強しだしてから英語に触れる機会が増えたなあ・・・。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
これでパスワードを変更したところ解決。どうも設定した最初の一回目ってエラーが出るらしく・・・。
settings.pyのパスワードも当然変えますよ!!!
これでついにMysqlが使えるようになりましたよ!!!
ただ・・・。本番のデータベースはまだsqliteを使っているのでそのデータを引っこ抜いてこないといけません。その方法は次回!
djangoのデータベースをsqlite3からmysqlに切り替えるまで1 - ニートがベルマーレ好きすぎて会社起こしたけど今後は未定
djangoのデータベースをsqlite3からmysqlに切り替えるまで2 - ニートがベルマーレ好きすぎて会社起こしたけど今後は未定
djangoのデータベースをsqlite3からmysqlに切り替えるまで3 - ニートがベルマーレ好きすぎて会社起こしたけど今後は未定