mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

WordPress(MySQL) - 'TYPE=MyISAM' エラー!

[ サーバ構築, ブログ ] [ MySQL, WordPress ]

こんばんは。

久々に、WordPress のプラグインを調整していたら、有効化した際にブラウザに以下のようなエラーメッセージが表示されるようになりました。

1
2
3
4
You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version
 for the right syntax to use near 'TYPE=MyISAM'
 at line 9 on line: 1471

※実際は1行で表示されています。

大体、原因は想像できました。 少し前に、Apache や PHP をアップデートした際に MySQL も 5.1 系から 5.5 系にアップグレードしていたので。

以下、原因と対策です。

記録

0. 前提条件

  • CentOS 6.3 での作業を想定。他の OS やディストリビューションでも同じだと思う。
  • WordPress 3.4.1 を想定。別のバージョンは未確認。
  • MySQL 5.5.27 を想定。5.5 系は同様だと思う。

1. 原因

MySQL のバージョンを 5.1 系から 5.5 系にアップグレードしたことにより、WordPress で使用しているプラグイン内の SQL の記述が不適切になってしまっている。 実際には、"Wordpress Automatic Upgrade" というプラグイン内のテーブルを作成する SQL 部分でストレージエンジンを

1
TYPE=MyISAM

と指定しているのが不適切らしい。 なぜなら、MySQL 5.5 系では TYPE ではなく ENGINE を使用しなければならないからだ。

2. 対策

プラグイン “Wordpress Automatic Upgrade” の PHP スクリプトを編集する。 “wp-content/plugins/wordpress-automatic-upgrade/” にある “wordpress-automatic-upgrade.php” 内の、

1
  ) TYPE=MyISAM

という行(1470行あたりと1488行あたりの2ヶ所)を次のように変更する。

1
  ) ENGINE=MyISAM

これで、エラーは出なくなる。 ※確かに、1470 行まで SQL 文を 1471 行で判定してエラーとなっているのが理解できる。

参考サイト


ただ、プラグインの PHP スクリプトを直接編集しているので、当該プラグインをアップデートした際には、再度確認して編集する必要があります。 MySQL 5.5 系に合わせたものなるには当分先になるでしょうが。。。

以上。

Comments