20210330_アウトプット(mysqlエラーと格闘)

アプトプット画像

今日やったこと

  • mysqlのエラーと格闘(3時間45分) →未解決



新しい発見

上記エラーについて調べたり、感じたこと
  • mysql5.6使っていたが、mysql5.7のあとは、8.0と一気にメジャーアップデートされていたことを知る。

  • mysql8.0はシークエルプロ使えないみたい。ただし、それに変わるアプリもあることを知る。

qiita.com

  • brew updateしたことにより、Mysqlのバージョンも最新版へ意図せずアップグレードしていたことが原因の様子。

  • 解決法を探すとバージョン5.6や5.7にダウングレードする方法が出てくる。

  • はじめはそれを試みていたが、ふとそれは「エラーを解消」だけが目的であり、そもそも「最新版の8.0」によるメリットは何か?(どんな影響があるのか)、もしそちらの方がよければ8.0を使う方法を模索した方がいいのではないかとも思い始めた。そういえば一次情報ちゃんと調べてなかったと思い始めた。


mysql8.0のメリット
  • SQLを勉強していた時に、それを扱うリレーショナルベース管理システムごとの癖が結構違うと感じていたが、mysql8.0では、それらのメソッドが便利になったり記述が簡略化されるようになったと理解。

  • 全てを理解は出来なかったが、ハードディスクの大容量化などによりログの出力する方がデフォルトに変わったり、クエリキャッシュと呼ばれるデータを抽出した時に一時的に残さないモードにしておかないと新しいバージョンでは起動しなくなったり、ユーザー認証に変更があることを知った。

eh-career.com

一次情報見てみよう
  • バージョンアップする前に確認すること(今回の場合、意図せずバージョンアップしちゃったけど互換性を確認するため)

  • Rubyの時に学んだようにちびちびバージョンアップした方がいい。

  • バックアップを取る必要もある。

dev.mysql.com

  • mysqlのアップグレードに伴う予備チェックをするコマンド
mysqlcheck -u root -p --all-databases --check-upgrade

=>mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38) when trying to connect
  • そもそもなぜ、/tmp/mysql.sockに接続しようとしているの?

掘り下げ1:cofig>database.ymlにおいて指定していた。

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock   👈👀❗️

掘り下げ2: リファレンスにもこの場所がデフォルトですって書いてあった。(知らなかった。)

サーバーがローカルクライアントと通信するために使用する UNIX ソケットファイルのデフォルトの場所は、/tmp/mysql.sock です

dev.mysql.com

  • mysqlのWebページ見づらい・・と思っていたが、右上のタブでバージョン切り替えてリファレンス読めることがここら辺でだんだん分かってきた。
バージョンを確認するコマンド(エラー内容がより詳しく出た)

起動しているか存在しているか確認して!

noMacBook-Air ~ % mysqladmin version
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

この2つの記事が解決の糸口になりそう😣

ソケットファイルの指定方法

MySQL :: MySQL 8.0 Reference Manual :: B.3.3.6 How to Protect or Change the MySQL Unix Socket File

今回のエラー原因では?

MySQL :: MySQL 8.0 Reference Manual :: B.3.2.2 Can't connect to [local] MySQL server



感想

  • エラー解決に必死になっていたけれど「1次情報そういえばちゃんとみてない」と視点を持てたのはよかった。
  • なぜならばRubyRailsなども、サポートされなくなるからバージョンアップするのに、必死になって「グレードダウン」する方法を調べているのでは?と思えてきたため。
  • 上手くいくかわからないけれど、会社で失敗するより個人で失敗する方がいいので、ターミナルのちょっと不安なコマンドも、意味を調べながら、チャレンジしてみようと思っている💦(エラー解決しますように・・・)
  • 調べたり、「どういう意味?」で今日の勉強終わってしまったが、向き合えたからよしとしよう。
  • バージョン8.0で、あとデフォルトのコネクト先を設定すればいける気がするんだけど違うのかな?そもそも設定どうするんだ?
  • しっかり寝てまた明日向き合ってみよう。
  • 自分の大事に思っている考えと技術力が高い方の思考が似ているととても嬉しい。少しでも近づけるように技術力アップ頑張ろうと励みになる。