رفع خطای دیتابیس WordPress database error Commands out of sync

رفع خطای مداومی که باعث مصرف منابع هاست در وردپرس میشود ، اگر شما هم مدام با خطای 500 درسایت خود مواجه می شوید به سراغ فایل error log  در هاست خود بروید اگر شما هم خطای زیر را به دفعات مشاهده کردید راه حل را قدم به قدم انجام دهید

WordPress database error Commands out of sync; you can’t run this command now for query SELECT option_value FROM wp_options WHERE option_name = ‘wc_pending_batch_processes’ LIMIT 1 made by shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessingController->Automattic\WooCommerce\Internal\BatchProcessing\{closure}, Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessingController->remove_or_retry_failed_processors, Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessingController->get_enqueued_processors, get_option

مشکل اصلی  **خطای دیتابیس** است: `Commands out of sync; you can’t run this command now`. این خطا زمانی اتفاق می‌افتد که اتصالات به دیتابیس به درستی بسته نشوند یا کوئری‌ها تداخل داشته باشند.

## راه‌حل سریع و قطعی رفع خطای دیتابیس:

۱. **تعمیر و بهینه‌سازی دیتابیس**:

به `wp-config.php` این خط را اضافه کنید:
“`php
define(‘WP_ALLOW_REPAIR’, true);
“`
سپس به این آدرس بروید: `yoursite.com/wp-admin/maint/repair.php`
روی **Repair and Optimize Database** کلیک کنید.

۲. **غیرفعال کردن Action Scheduler** (مشکل اصلی):

این مشکل از Action Scheduler ووکامرس است. دو راه دارید:

#### راه‌حل موقت:
به `wp-config.php` اضافه کنید:
“`php
// غیرفعال کردن batch processing
define(‘WC_DISABLE_BATCH_PROCESSING’, true);

// افزایش timeout برای دیتابیس
define(‘WP_MAX_MEMORY_LIMIT’, ‘512M’);
define(‘DB_CHARSET’, ‘utf8mb4’);
define(‘DB_COLLATE’, ‘utf8mb4_unicode_ci’);
“`

راه‌حل دائمی:
۱. از طریق phpMyAdmin به دیتابیس بروید
۲. این کوئری را اجرا کنید:

“`sql
DELETE FROM wp_options WHERE option_name LIKE ‘%wc_pending_batch_processes%’;
DELETE FROM wp_options WHERE option_name LIKE ‘%action_scheduler%’;
TRUNCATE TABLE wp_actionscheduler_actions;
TRUNCATE TABLE wp_actionscheduler_logs;
TRUNCATE TABLE wp_actionscheduler_groups;
TRUNCATE TABLE wp_actionscheduler_claims;
“`

۳. **پاک کردن جدول sessions**:

جدول `wp_woocommerce_sessions` را خالی کنید:
“`sql
TRUNCATE TABLE wp_woocommerce_sessions;
“`

۴. **تنظیمات سرور**:

به فایل `.htaccess` این خطوط را اضافه کنید:
“`
# افزایش محدودیت‌های PHP
php_value max_execution_time 300
php_value max_input_time 300
php_value memory_limit 512M
php_value post_max_size 256M
php_value upload_max_filesize 256M
php_value max_input_vars 5000

# کاهش load با محدود کردن cron
define(‘DISABLE_WP_CRON’, true);
“`

۵. **غیرفعال کردن cron داخلی وردپرس**:

در `wp-config.php`:
“`php
define(‘DISABLE_WP_CRON’, true);
“`
سپس از cron سرور استفاده کنید (در cPanel):
“`
*/5 * * * * wget -q -O – https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
“`

۶. **رفع مشکل در سطح کد**:

یک فایل PHP در ریشه سایت با نام `fix_db.php` ایجاد کنید:
“`php
<?php
require_once(‘wp-load.php’);
global $wpdb;

// خالی کردن action scheduler
$wpdb->query(“TRUNCATE TABLE {$wpdb->prefix}actionscheduler_actions”);
$wpdb->query(“TRUNCATE TABLE {$wpdb->prefix}actionscheduler_logs”);
$wpdb->query(“TRUNCATE TABLE {$wpdb->prefix}actionscheduler_groups”);
$wpdb->query(“TRUNCATE TABLE {$wpdb->prefix}actionscheduler_claims”);

// حذف option‌های مربوطه
delete_option(‘wc_pending_batch_processes’);
delete_option(‘action_scheduler_last_poll’);

// خالی کردن sessions
$wpdb->query(“TRUNCATE TABLE {$wpdb->prefix}woocommerce_sessions”);

echo “Database fixed successfully!”;
?>
“`
سپس به آدرس `yoursite.com/fix_db.php` بروید و بعد از اجرا فایل را حذف کنید.

### ۷. **بررسی پلاگین‌ها**:
پلاگین‌های زیر را غیرفعال کنید (اگر دارید):
– Rank Math SEO
– Jetpack
– Really Simple SSL
– هر پلاگین بهینه‌سازی یا کش

### ۸. **راه‌حل نهایی اگر موارد بالا جواب نداد**:

مرحله ۱: افزایش منابع در `wp-config.php`:

“`php
// قبل از require_once wp-settings.php
define(‘WP_MEMORY_LIMIT’, ‘1024M’);
define(‘WP_MAX_MEMORY_LIMIT’, ‘2048M’);
define(‘WP_DEBUG’, false);
define(‘WP_DEBUG_DISPLAY’, false);
define(‘SAVEQUERIES’, false);
define(‘CONCATENATE_SCRIPTS’, false);

// غیرفعال کردن object cache مشکل‌ساز
define(‘WP_CACHE’, false);
“`

مرحله ۲: پاک کردن کش ووکامرس:
“`php
// در functions.php تم فرزند اضافه کنید:

function clear_wc_cache() {
if (function_exists(‘wc_cache_flush’)) {
wc_cache_flush();
}
wp_cache_flush();
}
add_action(‘init’, ‘clear_wc_cache’);
“`

### ترتیب اجرا:
۱. **اول**: راه‌حل شماره ۱ (تعمیر دیتابیس)
۲. **دوم**: راه‌حل شماره ۲ (غیرفعال کردن batch processing)
۳. **سوم**: راه‌حل شماره ۶ (فایل fix_db.php)
۴. **چهارم**: راه‌حل شماره ۵ (غیرفعال کردن WP Cron)

## نکته مهم:
مشکل شما **تداخل در اتصالات دیتابیس** است. به احتمال زیاد:
– سرور overload شده
– کوئری‌های سنگین در حال اجرا هستند
– Action Scheduler ووکامرس در حال اجرای عملیات batch است

اگر بعد از این راه‌حل‌ها مشکل ادامه داشت، ممکن است نیاز به **ارتقای هاست** یا **مهاجرت به سرور قوی‌تر** داشته باشید.

آیا می‌توانید به phpMyAdmin دسترسی داشته باشید؟ اگر بله، سریع‌ترین راه خالی کردن جدول‌های action scheduler است.

مطلب در تاریخ 23 آذر 1404 به روز شده است

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید ؟
در گفتگو ها شرکت کنید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *