Pocket

MySQL起動時に「ERROR! The server quit without updating PID file」が発生

  • add this entry to hatena bookmark

MySQLのパラメータを変更してMySQLを再起動する際に、起動時にエラーが発生しました。

その際の対処について記載しておきます。(焦った・・・)

1.今回の変更点

あるサーバの my.cnf で以下のメモリ設定を変更しました。

  • thread_cache_size
  • key_buffer_size
  • sort_buffer_size
  • read_buffer
  • query_cache_size

2.エラー内容

その後に、MySQLを停止し、起動をかけました。すると、以下の状態になりました。

# /etc/init.d/mysql start
Starting MySQL... ERROR! The server quit without updating PID file (pidファイルパス).
#

PIDファイル周りで問題があったのか、今回設定したメモリ設定パラメータがまずかったのか・・・。

多少焦りつつも、とりあえずMySQLエラーログを参照してみました。

すると、以下のエラーが出ていました。

[Note] InnoDB: 1.2.10 started; log sequence number 16279201727
[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'
[ERROR] Aborting

今回の作業とは直接的には関係のない設定値「default-character-set」でエラーが出ている状態でした。

PIDうんぬんのエラーが出たのは、(設定がまずくて)MySQL起動できなかったよ、という内容みたいです。

とりあえず、確かに「default-character-set=utf8」は設定していたので無効にしました。すると、無事起動するようになりました。

3.調査と対応

まず、mysql でキャラクターセットを確認してみました。

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>

当然と言えば当然ですが、UFT8ではなくなっています。
次に、エラーの原因をググってみました。

すると、MySQL 5.5 からは、default-character-set オプションは廃止になる位置付けになっていました。

ちなみに、今の稼働バージョンは「Server version: 5.6.10 MySQL Community Server (GPL)」です。なぜ、default-character-set をセットしたまま今まで動いていたのかは疑問です。

とりあえず、UTF8 にしたいので、以下の設定を my.cnf に入れました。

#default-character-set=utf8
character-set-server=utf8

その後、MySQLを再起動して、キャラクターセットを確認しました。

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>

ちゃんと「UTF8」になっており、安心!

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。