MySQLを導入する際、解説サイト等で以下のようなパスを通すように説明があると思います。
C:¥Program Files¥MySQL¥MySQL Server 8.0¥bin
そして、パスが通ったかの確認として
mysql --version
上記をコマンドプロンプトで実行するのですが、以下のようなエラーメッセージが表示されます。
「パスの登録で指定したディレクトリの構造も正しいはずなのになぜ……?」と悩みに悩んだので、今回は同じようにこの作業をやっていてピンポイントで困った初心者向けにご説明します。
もくじ
スポンサーリンク
こんな人のための記事です
環境変数を下図のように設定しているにもかかわらず、mysqlコマンドが認識されないWindowsユーザー向け
実際のディレクトリを表示し、そのパスを貼り付けよう
ざっくりとした手順は以下
- 最初に登録した環境変数を削除する
- mysqld.exeが存在するフォルダを表示する
- アドレス欄をコピーして再度環境変数に登録
「ホントにこれで直るの?」と思う方もいるかもしれませんがやってみましょう。
1.最初に登録した環境変数を削除する
まずは最初に登録した環境変数を削除しましょう。
僕もめんどくさがって削除せずに上書き編集してみたところ、うまく反映されなかったので消してしまうのが一番です。
2.mysqld.exeが存在するフォルダを表示する
最初は解説サイトの情報をそのままコピペしたパスですが、ここはあえて自分の目で確認しましょう。
※「8.0」のバージョンの違いはご自身の環境に合わせて読み替えてください
わざわざ確認する理由はあとでしっかり説明します。
3.アドレス欄をコピーして再度環境変数に登録
前項で確認したアドレス欄のパスをコピーして環境変数に再登録しましょう。
「あれれ? 最終的にエラーが出たときの内容とやってることは同じじゃん!」と思うかもしれませんが、理由は次の項でしっかり解説します。
この状態でコマンドプロンプトを起動し
mysql --version
を実行してみましょう。
おそらく以下のようにバージョンが表示され、パスが通ったことが分かると思います。
スポンサーリンク
理由:ディレクトリの区切り文字であるバックスラッシュが正しい形で記述されていない
このエラーが出てしまった方は、おそらく解説サイト等に記載されているパスを「自分の環境と同じだから」ということでそのままコピペしたのではないでしょうか?
実は、解説サイトに記載されているパスの円記号は、私たちがWindowsでパスの区切り文字として使用している円記号と違う文字である可能性があるんです。
実際にあなたが解説サイトからコピペしたパスと、自分で確認して登録したパスを文字の比較サイトで確認してみましょう。
明らかに違いますね。おそらく解説サイトからそのままコピペしたパスは円記号で区切られ、あなたが実際目で場所を確認してからコピペしたパスはバックスラッシュで区切られているのではないでしょうか?
これは「円記号問題」という、コンピュータが抱える記号問題の一つなのですが、ざっくりいうと私たちが見ている円記号は3つ種類があります。
- 全角の円記号で、「¥」という表示。
- 半角の円記号で、「¥」という表示。(環境依存文字の円記号)
- 半角の円記号に見えるけど、実はバックスラッシュが日本語環境で勝手に置き換えられた円記号の表示。(環境依存文字ではない円記号)
Windowsの変換候補でいうと、以下のような3つで表示されています。
1と2は明らかに全角半角で違うので違いが分かりますが、2と3は見た目では全く分かりません。
そして、この中でWindowsのディレクトリ構造に使っている区切り文字は3つめの円記号(本当はバックスラッシュ)です。
ところが、Webサイト上に記載されたディレクトリ構造を示す区切り文字に2つめの円記号を使われていたりすると、気づかないうちにデタラメな区切り文字を使っていたりするので、Windowsから「そんなパスの指定の仕方ねーよ……」と追加したものを無視されてしまい、パスが無効になってしまうのです。
そのため、これはパスの登録だけに留まらず、以下のようにコマンドプロンプトで直接パスを指定する場合にも起こります。
上図を出した上で誤解を恐れずに言うならば、Windowsのパスの区切り文字はバックスラッシュであり、円マークではありません。
私たちが見ているパスの区切り文字の円マークはあくまでバックスラッシュが日本語環境において円マークに勝手に置き換えられたときの姿です。
円記号問題は根が深い問題でもあるので、気になった方は改めて調べてみてください。
まとめ
結果としてMySQLの導入でパスが通らないのは単なるきっかけにすぎず、Windowsが抱える問題と日本語の環境が複合して起こってしまった悲劇ということが分かりました。
僕はこの円記号問題に触れたことで、今までなぜか通らなかったパスや、なぜかコマンドを認識しない理由の大半が解決しました!
解説サイトはプログラミングやDBの環境の導入から実行までを親切に説明してくれますが、こういった問題で初心者は非常につまづきやすいですよね。
僕もこれに懲りて、何でもかんでもサイトの情報を鵜呑みにしてコピペせず、めんどくさくても自分の目で仕組みを確認してから設定するようにしようと思います。
どうしても出来ずに1日中ずっと悩んでいたのですがこちらの記事に書いてあることを試したところ無事にmysqlが認識されました!
本当に助かりました!ありがとうございます!!
>moneさん
コメントありがとうございます!
僕も同じように悩みまくったので、解決して良かったですー!