【问题标题】:Database error (caused by WooCommerce?) when trying to test WordPress site locally尝试在本地测试 WordPress 站点时出现数据库错误(由 WooCommerce 引起?)
【发布时间】:2024-01-15 10:33:02
【问题描述】:

我有一个托管在 GoDaddy 上的 WordPress 网站,并希望在本地对其进行测试。

我将数据库导出为 SQL 格式并将其下载到本地计算机上。然后我安装了 XAMPP 并将配置文件端口从 80 更改为 8080。现在我可以在LOCALHOST:8080 而不是LOCALHOST 上打开我的本地主机。

端口更改后,我在 XAMPP 中创建了一个新目录并插入了一个 HTML 文件以在 LOCALHOST:8080 上进行测试。它成功了,所以我准备好传输我的 WordPress 文件了。

首先,我将所有 WordPress 文件拖放到我创建的新文件夹中。接下来,我将数据库文件导入 MySQL。 最后,我尝试使用 LOCALHOST:8080/wordpress/wp-admin 访问本地的 WordPress 站点,但是当站点页面出现时,我收到一条错误消息,说我的密码或用户名不正确,打开 wp-config 文件并更新信息的广告。

我打开了wp-config 并将localhost 选项更改为localhost:8080。还更改了数据库用户名和密码。我现在可以连接到数据库,但出现错误:

Fatal error: Uncaught RuntimeException: Error saving action: Error saving action: Database error. in C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\migration\ActionScheduler_DBStoreMigrator.php:44 Stack trace: #0 C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\data-stores\ActionScheduler_HybridStore.php(242): ActionScheduler_DBStoreMigrator->save_action(Object(ActionScheduler_Action), NULL) #1 C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\ActionScheduler_ActionFactory.php(177): ActionScheduler_HybridStore->save_action(Object(ActionScheduler_Action)) #2 C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\ActionScheduler_ActionFactory.php(84): ActionScheduler_ActionFactory->store(Object(ActionScheduler_Action)) #3 C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\functions.php(36): ActionScheduler_ActionFactory->single('action_schedule...', Array, 1630078934, 'action-schedule...') #4 C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\migration\Scheduler.php(89): as_schedule_single_action(1630078934, 'action_schedule...', Array, 'action-schedule...') #5 C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\migration\Controller.php(99): Action_Scheduler\Migration\Scheduler->schedule_migration() #6 C:\xampp\apps\wordpress\htdocs\wp-includes\class-wp-hook.php(303): Action_Scheduler\Migration\Controller->schedule_migration('') #7 C:\xampp\apps\wordpress\htdocs\wp-includes\class-wp-hook.php(327): WP_Hook->apply_filters(NULL, Array) #8 C:\xampp\apps\wordpress\htdocs\wp-includes\plugin.php(470): WP_Hook->do_action(Array) #9 C:\xampp\apps\wordpress\htdocs\wp-settings.php(600): do_action('wp_loaded') #10 C:\xampp\apps\wordpress\htdocs\wp-config.php(111): require_once('C:\\xampp\\apps\\w...') #11 C:\xampp\apps\wordpress\htdocs\wp-load.php(50): require_once('C:\\xampp\\apps\\w...') #12 C:\xampp\apps\wordpress\htdocs\wp-blog-header.php(13): require_once('C:\\xampp\\apps\\w...') #13 C:\xampp\apps\wordpress\htdocs\index.php(17): require('C:\\xampp\\apps\\w...') #14 {main} thrown in C:\xampp\apps\wordpress\htdocs\wp-content\plugins\woocommerce\packages\action-scheduler\classes\migration\ActionScheduler_DBStoreMigrator.php on line 44

【问题讨论】:

    标签: wordpress woocommerce xampp localhost


    【解决方案1】:

    此问题记录在 Action Scheduler github 页面上,与内部数据库迁移和缺少表有关。

    add_action( 'init', function() { delete_option( 'schema-ActionScheduler_StoreSchema' ); } );
    

    你可以在你的主题的functions.php中添加这个sn-p,访问该站点,并在错误消失后将其删除

    【讨论】:

      【解决方案2】:

      注意:我没有足够的声誉来发表评论,所以其他人可以发表评论,我可以删除这个答案。

      在我看来,用户曾经访问/连接数据库服务器,现在它可以连接,只需要授予权限来读取和写入数据库及其表进口的。

      阅读 GRANT 概述部分(如果您有耐心,请阅读整个页面)https://dev.mysql.com/doc/refman/5.7/en/grant.html

      并授予您在 wp-config 文件中添加的同一用户足够的权限来读取和写入数据库中的数据库/表。

      尽可能具体说明,即尽可能选择用户,尽可能选择主机,尽可能选择数据库,尽可能选择表,尽可能选择权限访问(插入选择等)。 请记住,尽管其中大部分都可以使用通配符:(即 ALL、*、%)

      GRANT ALL ON *.* TO 'someuser'@'%';
      

      如果您不能足够具体,请使用通配符放松 GRANT,直到您看到某些东西正常工作,然后再次收紧。

      【讨论】:

        最近更新 更多