本地WampServer升级WordPress后遇wpdb属性未定义等多类技术问题求助
问题解决方案
1. 修复 Undefined property: wpdb::$actionscheduler_actions 警告
这个问题是WordPress的wpdb类无法识别actionscheduler_actions表的引用,本质是Action Scheduler(WooCommerce依赖的任务调度组件)的表未正确创建或注册:
- 先检查数据库中是否存在对应前缀的
actionscheduler_actions表(比如你的WordPress前缀是aa_,则表名应为aa_actionscheduler_actions)。如果不存在,执行以下SQL手动创建:CREATE TABLE aa_actionscheduler_actions ( action_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, hook varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, args longtext COLLATE utf8mb4_unicode_ci NOT NULL, schedule longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, scheduled_date_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00', scheduled_date_local datetime NOT NULL DEFAULT '0000-00-00 00:00:00', modified_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00', status varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending', group_id bigint(20) unsigned NOT NULL DEFAULT 0, attempts int(11) NOT NULL DEFAULT 0, last_attempt_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00', last_attempt_message text COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (action_id), KEY hook (hook), KEY status (status), KEY scheduled_date_gmt (scheduled_date_gmt), KEY group_id (group_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - 若表已存在仍报错,在主题
functions.php中临时添加以下代码强制注册表名,操作完成后记得删除:add_action('init', function() { global $wpdb; $wpdb->actionscheduler_actions = $wpdb->prefix . 'actionscheduler_actions'; }); - 也可以尝试禁用并重新启用WooCommerce,触发Action Scheduler的表初始化流程。
2. 修复 Vc_Manager::__wakeup() must have public visibility 警告
这个问题是WPBakery Page Builder(js_composer插件)版本不兼容PHP 8.0导致的——PHP 8.0要求魔术方法__wakeup()必须设置为public可见性:
- 优先更新WPBakery Page Builder到支持PHP 8.0的最新版本,这是最彻底的解决方式。
- 若暂时无法更新,手动修改插件文件:打开
C:\wamp64\www\aa\wp-content\plugins\js_composer\include\classes\core\class-vc-manager.php,找到__wakeup()方法,将其可见性从protected或private改为public。例如:
原代码:
修改后:protected function __wakeup() { // 原有逻辑代码 }public function __wakeup() { // 原有逻辑代码 }
3. 修复 Table 'T.a' doesn't exist 数据库错误
这个错误是因为查询语句使用了表别名a,但未指定对应的实际表名,结合查询的hook(woo_sc_import_coupons_from_csv),推测是某款WooCommerce优惠券导入插件的代码问题:
- 确认数据库中存在对应前缀的
actionscheduler_actions表,若不存在按第一个问题的方法创建。 - 找到触发该查询的插件(搜索
woo_sc_import_coupons_from_csv关键词定位),将其更新到最新版本,新版本通常会修复表名引用错误。 - 若更新后仍报错,临时禁用该插件,或手动修改插件内的查询语句,将
FROM a改为FROM aa_actionscheduler_actions a(替换为你的实际表名)。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

