【初心者向け】RailwayにDBのみデプロイした件

## はじめに
みなさん、こんにちは、こんばんは！
駆け出しエンジニア　ジンです！

今回は、
フロントはVite+React
APIとしてPythonを使うプロダクトを
作成していたのですが、

急遽DB連携が必要となったので
API兼バックエンドとしてPythonに追記し、
DBを単独でデプロイしました。
使用DBはMySQLです。

この時APIとしてコードを書いていたPythonは
既にRenderでデプロイしていました。
（フリープランを利用したく、、、、。）

RenderではDBは直接セットアップはできなかったので、
今回はRailwayにDB作成し、接続する形をとりました。
その時困ったことや、進め方を記しておこうと思います。

## DBのセットアップ

Railwayに接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/4cc9a0ed-df84-7312-81f0-d9a05746cb0b.png)

会員登録後（GitHubアカウントで登録できます。）
Start a New Projectをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/ab33700d-7994-6f52-f741-5871805d57c0.png)

私の場合はDeploy　MySQLを選択
（プロジェクトごとであれば、GitHubからのデプロイでOK）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/5c2e884b-40d3-a175-5e7f-fe6094f80d6b.png)

そうこうしているうちにデプロイは終了。
（早すぎ・・・。）

ただ、デプロイしただけで接続も出来てなければ、
テーブルもありません。

## 接続について

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/4fc73d37-d0c1-505b-0dda-e7cfecf3a71e.png)

接続において重要なのはココ
Variablesの部分に、
接続すべき情報が満載。

特に確認しておくべきは、
MYSQLHOST=  
MYSQLPORT=                    
MYSQLUSER=                     
MYSQLPASSWORD=
MYSQLDATABASE=     

SECRET_KEY=任意で設定

これらは接続のために必要で、 **バックエンドの.envファイルにて保存する情報** です。
これらはここに書いてあります。
＊＊＊となっているところをうつすだけです。

【ここで一度詰んだ】
この時、DBとバックエンドのデプロイを分けていたことで、
バックエンドで上記情報を記入しても、
**なぜかDBに接続できない**。

この時の接続テストは、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/ae6b7379-219b-4dfc-05b6-fa4b799d0d6a.png)
**MySQL Workbench**を使用。

Connectionsの＋を押すと、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/cc7b402c-ee63-8fc2-4712-e468acde6d80.png)
この画面が出るので、
Connection Name (なんでもＯＫ）
Hostname
Port
Username
Password
Default Schema(書かなくてもいいけど、書くならMYSQLDATABASEのところ）

なぜこのworkbenchを使ったかは、
まず接続できない原因が、
**DBなのか、バックエンドのコードミスなのかを
ハッキリさせたかったから**です。
（自身の接続情報に間違いがあると断定できる）

## つながらない
そう、つながらなかったんです。
結論から言うと、
今回記載する内容を変えなくてはいけなかった部分は
**HostnameとPort**でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/51ed9302-9e12-0742-b4d0-eb0ddcd512b1.png)
ここの13Railway～～
と書いてあるところをクリックすると、
アコーディオン式に出てくる情報があるのですが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3876954/baa6bdce-c862-0b20-3289-e41be18f7543.png)

ここの2と3行目にある、
**RAILWAY_TCP_PROXY_DOMAIN**
がHostname

**RAILWAY_TCP_PROXY_PORT**
がPort

として本来記載しなければなりませんでした。

結局バックエンドを別の場所にデプロイしてるので、このDBへは外部からの接続をしなくてはならないので、
**外部接続用のHostnameとPortが上記になる様子**。
（ここに気づくまでに数時間かかってました。）

これらを置き換えて入力すると、
無事に、接続成功と出ました。

これで残りは、テーブル作成を残すのみでした。

## テーブル作成
テーブルなどは間違いなく、XAMPP環境化でphpMyAdminそもそも設定しておけば間違いないと思います。バックアップとれば、SQLエディタで簡単コピーできるので省略します。

※一言
XAMPPのApacheがなぜか私の場合起動せず、
困ったことになっていたところ、
先ほど紹介したWorkbenchで接続後、
SQLエディタで簡単にテーブル、カラム作成ができました。

もちろんRailway上でもテーブル作成はできますが、（Dataの項目からテーブル作成）
一つ一つ手入力になるのでおススメできないですね、、、。
SQLエディタのほうが100倍速いです。（体感）


## まとめ
デプロイは初心者にはやはり山場だなぁと改めて感じました。
デプロイ自体は秒でできるので、簡単じゃん！と思っていたのに、接続にこれだけ手間取るとは、、、

その後も、接続できているのに、
バックエンドのコードが危ういと、
サーバーエラーになったりします。
私の場合は、
CORS　の設定や
conn  の設定が宜しくなく、
何度も、修正⇔再起動⇔リデプロイ
を繰り返していたので時間がかかりました。

早めに終わらせておくことに間違いはないですね、、。

デプロイ先を分けると、それぞれで管理しやすいメリットこそありますが、接続面では、まだまだ知識が必要そうです！

勉強します！
ありがとうございました！