WordPressアップデート後エラー「SELECT option_value FROM wp_options WHERE option_name」
ようやく重い腰を上げてWordPressのバージョンアップをしました。3.4系から3.7系への大幅バージョンアップです。ずっと、めんどくさくてアップデートを怠っていました。だってバージョンのアップデートするタイミングって、テンプレートやプラグインとの相性などもあって、何かとエラーが発生するリスクがありますから。
例えるなら、長い間歯医者に行かずに放置していて、久しぶりに歯医者に行く感覚です。虫歯を宣告されるのが怖かったんです。
jetpack photonをインストールしたかった
バージョン3.7系の売りと言えばセキュリティ関連の強化ですが、今回のアップデートの目的は別にありました。ワードプレスのホストサイトであるWordPress.comの画像サーバーをCDNとして使えるプラグイン「jetpack photon」を入れたかったんです。ですが、このプラグインはバージョン3.5以上でしか動かないために、ついにバージョンを更新することにしました。
それほど魅力的に見えた「jetpack photon」。というかCDNを導入してみたかった。
バージョンアップデート後エラー
当初の不安が嘘のように、新バージョンのインストールはあっさりと終わりました。アップデート後サイトを表示してみても問題なし。
無事にアップデートが完了したと思って、一応ログを確認してみたところ、エラーログにこんなエラーが何万行も出力されていることに気づきました。
何やら怪しいにおいプンプンするエラーログ。
エラー文言を確認しよう
stderrに、以下のような記述があり、
これは何かメッセージ的なので、\xを%に置き換える。
URLエンコードされてるっぽいのでデコードする。
WEBエンジニアなら見たくない文字列「データベースエラー」が。
どっかでサイト表示時にデータベースエラーが発生しているっぽい。
エラー文言中に、SQLクエリーが出力されている。このクエリーが手がかりになりそうだ。
phpMyAdminを確認しよう
今度はphpMyAdminを確認しよう。WordPressのインストールを売りにしているサーバーなら入っているはず。もちろん直接DBを操作しても構わない。
サイトで使用しているデータベースをphpMyAdminで開いて、テーブルにwp_optionsを指定すると、テーブルの中身の一覧を表示してみる。
そこからoption_nameに’sharedaddy_disable_resources’が入っているレコードを探してみたところ、データが存在しなかった。どうやらこのエラーは、DBからデータ取得を試みたがデータが返らず、データありきで処理を想定しているコードでエラーが発生しているものと思われる。
同じように他の行のSQLも見てみると、以下のようなフォーマットのエラーで、(hoge)の箇所がいろいろ異なるエラーが頻出していた。原因はどうやら1つのようだ。
「option_name」に指定されていた値。
syntaxhighlighter_settings
embed_autourls
widget_grofile
widget_jetpack_readmill_widget
widget_image
widget_facebook-likebox
widget_twitter_timeline
widget_blog_subscription
widget_simpletags
widget_tag_cloud
推測しよう
「option_name」の値を見てみると、widget_*という値が多く入っている特徴があったので、ウィジェットデータを取得している箇所でうまくいっていないように思われた。
ワードプレスで使用されるウィジェットは、
「利用できるウィジェット」
「利用しているウィジェット」
「使用停止中のサイドバー 」
「使用停止中のウィジェット」
という4つのステータスがあり、デフォルトのステータスは「利用できるウィジェット」のようだ。
その「利用できる」というステータスから、実際にサイトで使用するウィジェットと、使用停止にするウィジェット振り分けるんだけど、使用しないウィジェットについては、意図的に「使用停止」にしなくても「利用できる」というステータスのままで問題ないから、多くの人はデフォルトのステータスのままウィジェット管理していると思う。
しかしステータスを移動しないと、テーブルwp_optionsにデータが挿入されないらしく、そのために新しいバージョンのWordPressではエラーが発生するようだった。
まとめると
今回出力されていたエラーは、ウィジェットデータをデータベースから取得しようとして発生していたエラー。
・エラーの出たウィジェットは、そもそも利用していないので、サイト上は実害がない。エラーは気持ち悪いけど。
・ウィジェットを使用したくなった場合、ステータスを移動するタイミングでwp_optionsにデータが入るので、エラーが解消されるため実害はない。
ということで今回のエラーは、サイトの見た目上影響の出るエラーではないことが分かりました。気になる人がいれば、ウィジェットのステータスを意図的に移動することでエラーが解消されます。
この記事が気に入ったら
いいね!してね
最新情報をお届けします!
この記事が気に入ったら
いいね!してね
最新情報をお届けします!