PID:36633503 测试用图

因为调试某个代码,去php错误日志看了一眼。不看不得了错误日志已经1GB了,游览发现全部都是查询某表错误。

WordPress数据库查询SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (662,1752,2601,14,233,288,577,147,341,329,2235,1076,135,179,1441,276,1077,2309,7,133,2312,2240,8,13,2310,2950,16,9) ORDER BY meta_id ASC时发生Table 'db.wp_termmeta' doesn't exist错误,这是由require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), Shortcodes_Ultimate::register, Su_Data::shortcodes, Su_Tools::get_terms, get_terms, WP_Term_Query->query, WP_Term_Query->get_terms, update_termmeta_cache, update_meta_cache查询的。

查看数据库备份发现这个表里并没有什么东西,准备直接重建这个表。

操作数据库前一定要先备份,这很重要!

导出数据库又提示错误:

1146: Table 'wp_termmeta' doesn't exist when using LOCK TABLES

尝试加上 --skip-lock-tables 参数来导出,并没卵用。

mysqldump -uroot -proot --skip-lock-tables bd | gzip > /data/backup/bd.gz

以前也碰到过这个问题,既然这个表没啥数据一点也不慌,直接删除这个表的物理文件(sql没法删除依旧报错)。

删除完后重启mysql,成功导出数据库备份,然后新建表。

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;
ALTER TABLE `wp_termmeta`
  ADD PRIMARY KEY (`meta_id`),
  ADD KEY `term_id` (`term_id`),
  ADD KEY `meta_key` (`meta_key`(191));
ALTER TABLE `wp_termmeta`
MODIFY `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT;

再次查询此表已正常,可以看到PHP已不再继续报错,问题解决。

本文标签 : # #