質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Q&A

解決済

4回答

610閲覧

DB接続における各種エラーに高頻度で遭遇することに辟易しているため、皆様がどうしているのかを知りたい

lemon_engine

総合スコア4

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

0グッド

1クリップ

投稿2020/09/17 16:44

編集2020/09/17 16:51

よくCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2), Unknown MySQL server host 'db' (2),The server quit without updating PID fileなどのエラーに遭遇します。こういったMySQL特有のエラーやDB接続周りのエラー、socket関係のエラーに遭遇した時はエラーメッセージを検索にかけ、検索で出てきた文章を読み、直せるっぽいコマンドをターミナルに打ち込んで、動くかどうか祈るというやり方でエラーを解決してきました。そういう思考回路です。ですが、このやり方は博打に近く、仕組みを理解した解決方法ではないので不安になります。

そこで質問なのですが、

  • こういったDB周りのエラーに遭遇した時に、DB接続やsocketなどの仕組みをどのレベルまで理解してエラーを直しているのか。
  • どこまで理解すれはいいのか
  • 仕組みを理解する場合、どんなサイトや本を参考にしているのか

を皆様にお伺いしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

こういったDB周りのエラーに遭遇した時に、
DB接続やsocketなどの仕組みをどのレベルまで理解してエラーを直しているのか。

MySQL の socket の話に限って話せば、
次のあたりが、MySQL と接続するまでのsocket まわりのトラブルシューティングで
重要になってくる知識と考えています

text

1- socket は、ローカルの MySQL サーバーと通信するための接続方法で 2 TCP 接続よりも高速です 3- MySQL サーバーに接続する方法には次の 2 種類があります: 4 - TCP 接続 5 - socket 接続 6- 規定の MySQL の動作では、 MySQL server を起動すると 7 mysqld.sock が自動的に作成されます

teratail では、次の回答が参考になります:

実際に teratail でも
この知識が解決につながる内容の質問が繰り返し投稿されているようです

そして、それ以外の細かい動作は、必要なときに手元で検証しています

どこまで理解すれはいいのか

この socket の話などは、DB 周りというより、
MySQL という個別のアプリケーションのセットアップと疎通の話なので
このくらいの話であれば、
次のようなことなどをしていけば良いのではないかと思います

text

1- 今自分でやっていて詰まったところを、 2 後で見返して思い出せるレベルで次に残す 3 - メモ 4 - コメント 5- 定期的に見返す 6- できれば他の人に共有して教える

仕組みを理解する場合、どんなサイトや本を参考にしているのか

僕の場合は、MySQL の挙動は特定のサイトや本ではなく、
実際に MySQL を使って動かしたり
MySQL を使ったアプリケーションの保守を通じて学んできました
(強いて言えば Stack Overflow と公式マニュアルです)

知識に触れることよりも、
検索結果をすぐに検証できる環境が手元にあることの方が
理解の速度を早めてくれました

今は次の環境があるので
僕よりもはるかに効率よく学びを得ることができると思います:

text

1- すぐに MySQL を動かせる Docker 2- 沢山の導入しやすい MySQL クライアント 3 - Visual Studio Code のプラグイン 4 - MySQL WorkBench 5 - PhpMyAdmin (Docker イメージあり) 6 - Adminer (Docker イメージあり)

参考: Docker Desktop で 開発用 Web アプリを起動してみよう | ultra code

投稿2020/09/17 18:18

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

このやり方は博打に近く

一番気になったのはこの一文ですが、本番環境でいきなりやるんですか?
どんな問題が発生しても検証環境やステージング環境で同じ状態に持っていってテストをしてからやりませんか?

こういったDB周りのエラーに遭遇した時に、DB接続やsocketなどの仕組みをどのレベルまで理解してエラーを直しているのか。

今でこそmysqlのsocketどうこうのエラーでもすぐ分かりますけど、使い始めた頃なんて色々サッパリ分からないので、検索掛けた結果情報の多いもの(多数決)で決めてました

どこまで理解すれはいいのか

エラーに関してのみ言うなら、エラーを再現しての検証とそのリカバリー作業の検証に必要なところまで

高頻度で遭遇

mysqlを普通に使ってて高頻度はありえないので、操作を見直した方がいいかもしれません
操作記録を残して何をした時にエラーが起きているのか突き止めた方がいいでしょうね

投稿2020/09/17 18:06

編集2020/09/17 18:28
hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

直せるっぽいコマンドをターミナルに打ち込んで、動くかどうか祈るというやり方でエラーを解決してきました。そういう思考回路です。ですが、このやり方は博打に近く、仕組みを理解した解決方法ではないので不安になります。

プログラムは書いた通り(環境・設定も含め)にしか動かないので、
コマンドでもスクリプトでもコードでもどんな小さい機能でも、意味を理解してから実行するようにすることです。
**「理解できてないものは使わない」**くらいの気概をもっても良いかと思います。
仰っているように、なぜか分からないけど動いている・直った というのが一番怖いからです。

私もコピペすることはあれど、ほとんどのケースで何が起きるのか知らないものはコピペでも使いません。
まぁほとんどの環境は壊れたら作りなおせることを知っているのでそのあたりの不安はあまりないですが、壊れたら手間かけて作り直さなきゃいけませんからね(それで深まる理解もある)。

teratailのような質問サイトを利用する際も、その場凌ぎだけで終わらせないようにすること。
多くの人はきちんと学ぶ姿勢がある人に対してはとことん手を差し伸べてあげたい人です。「分かった気ではなく、確実に理解してから解決したい」という姿勢で教えを請えば、良いアドバイスを得られると思いますし、少なくともヒントはきちんともらえると思います。

基本は

  • エラーを読む
  • 公式またはそれに準ずるドキュメント・リファレンスを確認する
  • デバッグをする

ことですね。
エラーはどこに問題があるか教えてくれる目の前の手がかりですし
ドキュメント・リファレンスは仕様で、確実な情報源です。
デバッグは問題の切り分けに大いに役立ちます。

投稿2020/09/18 00:10

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「どんな障害が発生して」「何が原因で」「どのように解決したか」を記録するといいですよ。
WordやExcelできっちりドキュメント化するのが理想ですが、時間が取れなければテキストで箇条書きでもOKです。

あとプログラミングも同じですが「ぐぐってコピペしたら動いた(直った)」ではスキル向上は見込めません。
仕組みを理解して「なんで動いた(直った)のか」を理解し積み重ねていくことが成長につながると、私は考えています。

投稿2020/09/17 21:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問