41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

起動しない、エラーログ出ない、困ったー!と言う時はmy.cnf(my.ini)を見よう

小学校受験の話をガッツリ書く前に、今日はちょっとしたMySQLの小話。

なんで起動しないのか確認できないよぉ…

MySQL Serverを起動しようとしたら起動しない。

でも、エラーログが出てない。

実行しているコンソール上にも何も出ない。

なんで起動しないのかわからないよー!

そんな時ありませんでした?

理由は恐らくあなたのmy.cnf(my.ini)にあります。

my.cnfやmy.iniのあるパラメータに注目

それはdatadirとlog_errorです。

log_error が指定されていない場合、またはファイルに名前を付けずに指定されている場合、--pid-file オプションが指定されていないかぎり、デフォルトの宛先はデータディレクトリ内の host_name.err という名前のファイルになります。

log_error が指定されているが、ファイル名だけの場合、そのファイルはデータディレクトリ上に作られます。

log_error が指定されていて、パスも記載されている場合、そのファイルはそのパス上に作られます。

データディレクトリは通常、インストールディレクトリ下のdataフォルダ下になり、datadirで指定されます。

つまり、

  • datadirに記載されたパスが間違っていて、
  • かつlog_error が指定されていない or ファイル名しか記載されてない or パスが記載されているが、そのパスがdatadirに書かれたものと同じ

場合、エラーログが出ない上に、起動しない現象が起きます。

解決方法はdatadirを直す

こういう場合、datadirの記述を見直してください。

Linuxだったら大文字小文字、Windowsだったら¥の数や半角スペースとかがおかしくないか見てみましょう。

log_error をデータディレクトリじゃないところにして、パスも記載しておけばdatadirが間違っててもログを見ればばっちりです。

参考

https://dev.mysql.com/doc/refman/8.0/ja/error-log-destination-configuration.html https://dev.mysql.com/doc/refman/8.0/ja/server-system-variables.html#sysvar_datadir https://dev.mysql.com/doc/refman/8.0/ja/server-system-variables.html#sysvar_log_error