MySQLで ERROR! The server quit without updating PID file って言われた話
状況
web開発をしていて,日本語を含むレコードを作成できなかったので,文字コードを調べてみたところ,latin1ってなってた
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>
ということで,utf8に設定しようと,一旦停止してから,/etc/my.cnfを設定して,再びMySQL起動すると,
$ sudo service mysql startStarting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/vagrant-centos65.vagrantup.com.pid).
え,起動できない...
調べると .errファイルを削除するとか,動作中のプロセスを確認するとか出てくるがそれでも解決せず
原因
どうやらMySQL5.5からはutf8への設定の記述が異なるらしい
以前
default-character-set=utf8
以降
character-set-server=utf8
結果
MySQL起動
sudo service mysql start
Starting MySQL. SUCCESS!
文字コードはutf8
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>
日本語を含むレコードも作成できた
結論
あたりまえだけど,問題発生したときは,変更を加えた箇所が怪しいということ
しかし,こういう仕様の変更って気づかないと結構恐ろしい