GCPのcloud_sql_proxyでReady for new connectionsから点灯していて進まないと思っている方向け

こんにちは。

ASUKARUでは、最近GCP(Google Cloud Platform)を推してします。理由は様々ですが、固定額のレンタルサーバーもいいですが(安心感あり)、できることがやはり限られていることと、SEO対策のために様々なことをしなければならないためです。

佐賀県の神埼市では、サーバーはだいたいレンタルサーバーであることが多いですが、サイトの構築に力をいれていくための時間もないって方には本当におすすめです。

 

さて、GCPでのデータベースへの接続なのですが、今回は「え??データベースに接続しようしてcloud_sql_proxyをダウンロードしてきたけど接続できてんの?」っていう方向けの記事になっています。

今回は

  • Windows10 Pro
  • PyCharm(エディタ) Pro
  • DBはまさかのXAMPP(笑)

 

Python(Django)での開発だったのですが、まぁ・・・・。

 

さて、WEBアプリケーションなので、実際にはDBとの通信が必要ですね。通常(ローカル環境)であれば単純な話なのですがGCPで行おうとするとちょっと話が変わってきます。

でも全部を記述することは難しいので、いったん以下を前提にします。

 

  • GCPのアカウントは設定されている
  • cloud_sql_proxyはダウンロード済み
  • gcloudコマンドで認証は通してある(gcloud auth login)
  • sqlの作成やAPIも有効化されてある

 

それでは、cloud_sql_proxyを使って(今回はPyCharmのTerminalを使用していますがコマンドプロンプトからでも同じです)GCPのsqlに接続していきます。

 

まずは、cloud_sql_proxyを自分の作業環境ディレクトリにまで移動させてください。

cloud_sql_proxy
cloud_sql_proxy

だいたい、GCPにデプロイするファイルと同列になるかと思います。

次に、PyCharmのターミナルから、

sqlコマンド
cloud_sql_proxy_commandはこれを使ってください。

 

-instancesのところは、ご自身のGCPのSQL接続インスタンス名に書き換えてください。

お決まりですね。

cloud_sql_proxy -instances=<接続インスタンス名>=tcp:3306

 

 

すると、以下のようになって接続が完了したのかどうかわからないかと思います。

CloudSQLへ接続を試みようとしている状態
CloudSQLへ接続を試みようとしている状態

 

そして、待てど暮らせどこのまま先に進みません。

他のコマンド(たとえばInstallするようなコマンド)であればここで「success!!」なり「warning」なり反応をしてくれるのですが、このまま進行していかない状態に頭を悩まされる方もいらっしゃるかもしれません。

でも、実はこの最後のメッセージをみていただきたいのですが、

「Ready for  new connections」

と書いてあります。

そうか。そうか。このまま待っていれば接続してくれるのか。と思っている方は、残念ですが待っていてもダメです。

 

なんと!!ここでこの状態はそのままにしておいて、別にローカルのMySQLに接続していく必要があるのです!

 

 

え??って思われた方は、ドキュメントをよく読まれてください。

ドキュメントを読む暇なんてない!って方は、このまま進んでいってください(笑。

2020/04/18 07:35:45 Listening on 127.0.0.1:3306 for <ご自身のインスタンス名>
2020/04/18 07:35:45 Ready for new connections

これは、つまりローカルのDBとSQLインスタンスを接続するよ!こっち(SQLインスタンス)の準備はできてるよ!待ってるよ!っていう意味の「Ready for new connections」なんです。

SQLインスタンスの準備をしているよ!」っていう意味のメッセージではありません(爆

 

で、話を元に戻して「じゃあ、ここから何をすればいいのか!」ってことなのですが、

ローカルのMySQLに接続してください。その際ですが、「Listening on 127.0.0.1:3306 for <ご自身のインスタンス名>」がジャブのように効いてきます。これは「SQLインスタンスは127.0.0.1:3306 」で待ってるよ!接続してね!」っていうことなので、ここに向かって接続をしてあげる必要があります。

そのため、ローカルのMySQLに接続するときにはいつものように「mysql -u root -p」とするだけではなく、以下のようなコマンドを叩く必要があります。

少ないとは思いますが、XAMPPのローカルDBを使っている場合は、

XAMPPのSHELLを叩いてターミナルにアクセス
XAMPPのSHELLを叩いてターミナルにアクセス

 

XAMPPのコンパネの「SHELL」をクリックしてターミナル側へアクセスしてください。

きちんとDockerなどで環境を構築している方はその環境のMySQLに接続するようにしてください。

ターミナルには、以下のコマンドを入力します。

 mysql -u <SQLインスタンスに設定したユーザー名> -p --host 127.0.0.1

この–hostオプションが先ほどの待っている場所(Listening on 127.0.0.1:3306)になるわけです。

 

このコマンドを実行すると、パスワードの入力を求められるかと思います。SQLインスタンスで設定したパスワードを入力してください。

shellからクラウドSQLへ接続完了
shellからクラウドSQLへ接続完了

 

こんな感じになりますでしょうか。

「Welcome to the MariaDB monitor.」と出ていれば大丈夫です。

 

そして、先ほどのPyCharmのターミナルの方へ戻ってみましょう。

「New Connection」という表示が出ていれば問題なく接続ができています。あとは、ローカルとサーバー環境の処理切り分けなどを設定ファイルに記述してください。そうすればうまく開発していけると思います。

 

長くなりましたが。

 

今日もいい一日でありますように!

 

 

 

GCPでエラー表示 ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: Your app may not have more than 15 versions. Please delete one of the existing versions before trying to create a new version.

GCPで次のようなエラーが出力されることがある。

ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: Your app may not have more than 15 versions. Please delete one of the existing versions before trying to create a new version.

 

GCPでバージョンが多すぎるというエラー

 

これに対応するには、要は不要な過去のバージョンを削除していけばOKということ。

 

まずは、バージョンを確認してみよう。

gcloud app versions list

 

 

次に、過去のバージョンを削除しよう。

 

gcloud app versions delete バージョン

 

最後にもう一度、アプリのデプロイをすればOK!

gcloud app deploy