見出し画像

本番環境におけるSQL(備忘録)

 本番環境で、バリデーションが機能せず、違反したデータがデータベースに保存されてしまったことにより、デプロイ後にwebページを開けないといった問題が生じました。
 今回は、その違反データがあるか確認し、違反データを削除したいと思い本記事の内容を実装しました。


●本番環境へログイン

本記事で実装している内容は、あくまで本番環境で生じた問題を解決するため実装した内容ですので、当然本番環境にログインをします。

#本番環境にログイン 
$ ssh -i [pem鍵の名前].pem ec2-user@[作成したEC2インスタンスと紐付けたElastic IP]


●データベースの選択

手始めに、mysqlに接続し、操作したいデータベースを指定します。

#本番環境 
$ mysql -u root //パスワードの入力が求められます

$ SHOW DATABASES; //SQL文の終わりには ; (セミコロン)が必要です
+----------------------------------+
| Database                         |
+----------------------------------+
| information_schema               |
| アプリ名_production                |
| mysql                            |
| performance_schema               |
+----------------------------------+

$ USE アプリ名_production

解説:
mysql -u rootを本番環境下で実行するとmysqlに接続されます。
2行目の " SHOW DATABASES; " ではデータベースを一覧で表示するSQL文です。必要とするデータベース名がわからなかった初学者の私には、とても親切なコマンドでした。
次の " USE アプリ名_production " は " SHOW DATABASES; "コマンドで表示させた選択したデータベースを選択するコマンドです。

●テーブルの選択

次に、違反したデータを取り出そうと思います。ですがその前に、そもそもデータベースないのテーブルを適切に指定しないと、今回目標とする削除等の操作はできません。。。

#本番環境 
//USE アプリ名_production;コマンドの実行でデータベースを選択している状態とします
$ SHOW TABLES; 
+--------------------------------------------+
| Tables_in_アプリ名_production                |
+--------------------------------------------+
| テーブル名1                                  |
| テーブル名2                                  |
+--------------------------------------------+ 

解説:
" SHOW TABLES; " コマンドは指定したデータベースに存在するテーブルを表示できるSQL文です。
これにより、どのテーブルに対してどんなアクションを取りたいかを適切に記述できる下準備ができました。

●テーブルから違反したデータを削除

今回はテーブルxという名のテーブルにあるデータを削除する礼を示します。

DELETE FROM テーブル名x WHERE 条件;

ここでは実際にidが2のレコードを削除する例も示します。

DELETE FROM テーブル名x WHERE id = 2;


以上の例のように、違反データを削除することにより、本番環境に無事アクセスできました。

備忘録にお付き合いいただきありがとうございました。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
1
エンジニア転職を目指す23歳 大学での、C言語、C++、Python、Linuxの学習経験あり。 テックキャンプにて、Ruby、javascript、Haml、Scss、SQL、AWS等の学習をしています。 現在は、転職活動と並行してPHPの独学とPythonの復讐をしています!