ワードプレスのルートディレクトリーもしくはそのワードプレスを使用しているドメインのルートディレクトリーに”error_log”というファイルが生成される。読んで字のごとく、エラーを記録するログである。
この記事は自分及び同じ問題にさしあたっている人の為の資料として公開しています。何か問題 及び 修正追加等があればコメント欄に書き込んでくださいm(_!_)m そしてなにかをする場合はもちろん自己責任です。
目次
問題:以下の様なエラーが記録されている。
[25-Jun-2016 16:41:09 UTC] WordPress database error Table '(データベース名).wp_termmeta' doesn't exist for query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (3,172,211,579,573,576,577,581) ORDER BY meta_id ASC made by require('wp-blog-(テーマ内ファイル).php'), require_once('wp-includes/template-loader.php'), include('/themes/(テーマ名)/(テーマ内ファイル).php'), get_header, locate_template, load_template, require_once('/themes/(テーマ名)/(テーマ内ファイル).php'), get_template_part, locate_template, load_template, require('/themes/(テーマ名)/(テーマ内ファイル).php'), wp_nav_menu, wp_get_nav_menu_items, get_terms, update_termmeta_cache, update_meta_cache [25-Jun-2016 16:40:17 UTC] WordPress database error Table '(データベース名).wp_termmeta' doesn't exist for query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (3,172,211,579,573,576,577,581) ORDER BY meta_id ASC made by require('wp-blog-(テーマ内ファイル).php'), require_once('wp-includes/template-loader.php'), include('/themes/(テーマ名)/(テーマ内ファイル).php'), get_header, locate_template, load_template, require_once('/themes/(テーマ名)/(テーマ内ファイル).php'), get_template_part, locate_template, load_template, require('/themes/(テーマ名)/(テーマ内ファイル).php'), wp_nav_menu, wp_get_nav_menu_items, get_terms, update_termmeta_cache, update_meta_cache [25-Jun-2016 16:44:28 UTC] WordPress database error Table '(データベース名).wp_termmeta' doesn't exist for query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (528,276,269,275,561,186,303) ORDER BY meta_id ASC made by require('wp-blog-(テーマ内ファイル).php'), require_once('wp-includes/template-loader.php'), include('/themes/(テーマ名)/(テーマ内ファイル).php'), get_template_part, locate_template, load_template, require('/themes/(テーマ名)/(テーマ内ファイル).php'), get_related_wp_query_args, wp_get_post_tags, wp_get_post_terms, wp_get_object_terms, update_termmeta_cache, update_meta_cache [25-Jun-2016 16:42:08 UTC] WordPress database error Table '(データベース名).wp_termmeta' doesn't exist for query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (220,183,567,219,212) ORDER BY meta_id ASC made by require('wp-blog-(テーマ内ファイル).php'), require_once('wp-includes/template-loader.php'), include('/themes/(テーマ名)/(テーマ内ファイル).php'), get_template_part, locate_template, load_template, require('/themes/(テーマ名)/(テーマ内ファイル).php'), get_related_wp_query_args, wp_get_post_tags, wp_get_post_terms, wp_get_object_terms, update_termmeta_cache, update_meta_cache [25-Jun-2016 16:49:55 UTC] WordPress database error Table '(データベース名).wp_termmeta' doesn't exist for query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (184,183) ORDER BY meta_id ASC made by require('wp-blog-(テーマ内ファイル).php'), require_once('wp-includes/template-loader.php'), include('/themes/(テーマ名)/(テーマ内ファイル).php'), get_template_part, locate_template, load_template, require('/themes/(テーマ名)/(テーマ内ファイル).php'), get_related_wp_query_args, wp_get_post_tags, wp_get_post_terms, wp_get_object_terms, update_termmeta_cache, update_meta_cache [25-Jun-2016 16:42:13 UTC] WordPress database error Table '(データベース名).wp_termmeta' doesn't exist for query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (615) ORDER BY meta_id ASC made by require('wp-blog-(テーマ内ファイル).php'), require_once('wp-includes/template-loader.php'), include('/themes/(テーマ名)/(テーマ内ファイル).php'), get_template_part, locate_template, load_template, require('/themes/(テーマ名)/(テーマ内ファイル).php'), get_related_wp_query_args, wp_get_post_tags, wp_get_post_terms, wp_get_object_terms, update_termmeta_cache, update_meta_cache
上記の様なエラー内容がウェブサイトのページをロードするたびに一度に何行か並び、それが知らない間に数ギガ溜まっていた。
結局のところ問題なのはエラー内容が示す通り、データベースの中にその参照なり、書き込みなりをしたいテーブルが見つからないためにいちいちエラーになり、サーバーのCPUパワーをも消耗させたりし、サイトのパフォーマンスに影響が出てくる。
解決策:テーブルを作ってあげる
解決策はいたって簡単である。エラーが示す通り、必要なテーブルとその中身を作ってあげればよい。でも、SQLの編集がわからない場合は以下をそのままphpmyadmin等を使い、SQLのタブから入力、実行すれば問題は解決する。
以下からコピー&ペーストすればよい。注意事項として、テーブルのプレフィックスを「wp_」以外に変更していたり、下記の要件を満たしていればcollationは基本的に
utf8mb4_unicode_ci
のままで良いが、
- WordPress 4.2かそれ以上
- MySQL 5.5.3かそれ以上
それ以下なら
utf8_general_ci
に変更すればよいと思われる。
WordPressとMySQLのCollationについては、WordPress 4.2、MySQL 5.5.3及びutf8mb4についてを参照の事。
CREATE TABLE IF NOT EXISTS wp_termmeta ( meta_id bigint(20) unsigned NOT NULL, term_id bigint(20) unsigned NOT NULL DEFAULT '0', meta_key varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, meta_value longtext COLLATE utf8mb4_unicode_ci ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Indexes for dumped tables -- Indexes for table wp_termmeta ALTER TABLE wp_termmeta ADD PRIMARY KEY (meta_id), ADD KEY term_id (term_id), ADD KEY meta_key (meta_key(191)); -- AUTO_INCREMENT for dumped tables -- AUTO_INCREMENT for table wp_termmeta ALTER TABLE wp_termmeta MODIFY meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT;
結果:以下を上記をSQLでそのまま実行した結果です。このままの結果で問題有りません。
こちらの環境では以後、error_logには何も記述されることは無くなりました。
コメント