WordPress のプラグイン Popularity content が Incorrect table name で有効化できない

 

WordPress3系になってからなのか?新規で作成したWordPressサイトに
新着記事の要領で人気記事一覧を表示してくれるプラグインの
『Popularity content』をインストールしようとすると、
Incorrect table name
と、どうやら不正なデータベーステーブルを参照してしまったらしきエラーが出力され、有効化できない。

Popularity content は人気記事を判定するためのデータを
専用のデータベーステーブルを作成した上で保存するが
どうやらその作成段階で失敗しているようである。

プラグインからテーブルを作成する場合の仕様が変わったのだろうか。

これを解決するには、
プラグインを修正する方法と、データベースを用意してあげる方法と、二通りある。

ここではデータベースを用意してしまう方法を取ろうと思う。

プラグインが不正なテーブルを参照しようとしていると言うなら
先回りしてそのテーブルを作成しておいてしまえばいいのだ。
(有効化したあと、初めてデータが蓄積されるので、空っぽの箱を用意するだけで良い)

phpMyAdminという、
UIベースのデータベース管理機能が、大抵の場合利用することが出来る。
サーバーのコントロールパネルからphpMyAdminを探してみよう。

ログインすると、まず左サイドバーを確認する。
そこには
・niwatako
など、データベースが一覧になっている。
(格安レンタルサーバーでは一人1データベースで
 選択肢はひとつしかない場合がある)

その中から、WordPressに利用しているデータベースを選んでクリックする。
すると、今度はメインの画面にテーブルの一覧が表示される。
データベースの中には、データを格納するテーブルが沢山入っている。

wp_commentmeta
wp_comments
wp_links



などと、様々なデータが格納されているテーブルが並んでいると思う。

ちなみに、wp_ というのは私が指定したもの。
wordpress_とかabcとか、何でもあり。
指定していなければ「commentmeta」だけ。

これは接頭辞と言い、同じデータベースでblog1とblog2を運営するとき
blog1_commentmetaとblog2_commentmetaなど、
先頭につく文字列で区別しようとするもの。

というわけでともかく自分のWordPressのデータを発見できたなら、
そこに、Popularity content が利用するためのテーブルを作れば良い。

つくるテーブルの名前は、
ak_popularity と、 ak_popularity_options。
ak_は、おそらくこのプラグインが利用するということを表している。
だから他のブログと区別するための接頭辞ではない。

もしもwp_commentmetaならwp_など、
任意の接頭辞を使用している場合、更に頭につけてやる必要がある。

したがって私の場合、
作成するテーブル名は
wp_ak_popularity
wp_ak_popularity_options
になる。

みなさんも自分の環境に合わせて接頭辞をつけて(もしくは付けないで)欲しい。

さて、テーブルの作り方であるが、
ちょっと難易度が高い。
「SQL文」というのが必要だ。

といってもコピペすれば済むのだけど。

あまりビビらずに、次のサンプルを見て欲しい。
【接頭辞】 と書いている部分は各自に合わせる。 私の場合は wp_ だ。

CREATE TABLE IF NOT EXISTS `【接頭辞】ak_popularity` (
`post_id` int(11) NOT NULL,
`total` int(11) NOT NULL,
`feed_views` int(11) NOT NULL,
`home_views` int(11) NOT NULL,
`archive_views` int(11) NOT NULL,
`category_views` int(11) NOT NULL,
`single_views` int(11) NOT NULL,
`comments` int(11) NOT NULL,
`pingbacks` int(11) NOT NULL,
`trackbacks` int(11) NOT NULL,
`last_modified` datetime,
KEY `post_id` (`post_id`)
) ENGINE=MyISAM;

CREATE TABLE IF NOT EXISTS `【接頭辞】ak_popularity_options` (
`option_name` varchar(50) NOT NULL,
`option_value` varchar(50) NOT NULL
) ENGINE=MyISAM;

これが、目的の2つのテーブルを
それぞれ中に入れるデータの入れ方まで指定して作成する命令文である。

テーブルは言ってみればタンスであり、
その中に更に細かく引き出しが存在している。

CREATE TABLE IF NOT EXISTS `【接頭辞】_ak_popularity`
テーブルを作る、存在していないときに。 名前は’【接頭辞】ak_popularity’。
そんな宣言をしている。

そして ( ) の中で
細かくデータテーブルの持つ引き出しについて指定している。

とりあえずなんとなく理解したら、これを使ってテーブルを作成する。

現在、「構造」というタブでデータベース内のテーブル一覧を見ている。
これを「SQL」というタブに切り替える。
メインカラムの上部にあるはずなので見つけて欲しい。

SQLタブをクリックすると、
データベース niwatako 上でクエリを実行する
というようなメッセージと共に、
空欄のテキストフィールドが現れる。

このテキストフィールドに先ほどの命令をコピペし、
接頭辞を2つそれぞれ適切に書き換えた上で、
右下の実行するを押すと、無事にテーブルが作成できる。

ここまで長い説明だったが、要するに
1.SQL画面へ行く
2.コピペする
3.接頭辞を書き換える×2
4.実行
これだけである。

実行時は、
特にオプションを指定する必要はない。

※初期値はこんな感じだと思う
[デリミタ ; ] [x]実行したクリエをここに表示する
[x]non [ ]EUC [ ]SJIS エンコードする
[ ] 全角カナへ変換する

実行したら、構造タブに戻って
新しく2つのテーブルができているか確認する。

そしてWordPressに戻ってプラグインの有効化に再トライしてみよう。

この記事はお役に立ちましたか?


コメント

コメントする