Files
citrus-cms/resources/views/guide/CLEANUP_INSTRUCTIONS.md
T
2026-04-28 21:15:09 +03:00

5.3 KiB

Test Package Cleanup - SQL Error Fix

Problem Summary

SQL syntax error occurred when trying to delete records with empty test_package_no values:

SQLSTATE[42000]: Syntax error near '' at line 1
WHERE (`test_package_no` = '' or `test_package_no` is null)

What Was Fixed

1. Enhanced Error Handling

  • Added comprehensive try-catch in weld_logs.php SaveTrigger
  • Made cleanup operation non-critical (won't break main flow)
  • Added detailed error logging

2. Integrated Cleanup System

File: resources/views/cron/weld_logs-delete-non-matching-test-pack-statuses.blade.php

Now includes TWO cleanup sections:

SECTION 1: Empty Records Cleanup (NEW)

  • Automatically deletes empty/null test_package_number records
  • Automatically deletes empty/null test_package_no and drawing_no records
  • Runs on every SaveTrigger execution (continuous cleanup)

SECTION 2: Non-Matching Records Cleanup (EXISTING)

  • Deletes records not present in weld_logs
  • Added null and empty string validation
  • Array filtering before deletion

Before:

-- Two separate scripts needed
WHERE (`test_package_no` = '' or `test_package_no` is null)  -- ERROR!

After:

-- Single integrated script
SECTION 1: DELETE empty records first
SECTION 2: DELETE non-matching records (with proper validation)

3. Simplified Architecture

  • Removed: cleanup-empty-test-package-numbers.blade.php (redundant)
  • Removed: admin-ajax/cleanup-empty-test-packages.blade.php (redundant)
  • Single Source: All cleanup in one place, runs automatically

How to Use

Step 1: Clear Cache and Restart Queue

php artisan cache:clear
php artisan config:clear
php artisan queue:clear
php artisan queue:restart

Step 2: Test the Fix

Edit any weld_log record:

  • The cleanup will run automatically via SaveTrigger
  • Check logs: tail -f storage/logs/laravel.log
  • Should see: "Test pack cleanup completed successfully"

Step 3: Monitor Logs

Success indicators:

[INFO] Deleted empty test_package_number records: 5
[INFO] Deleted empty field records: 12
[INFO] Deleting non-matching test packages: 3
[INFO] Test pack cleanup completed successfully
  - empty_test_packages_deleted: 5
  - empty_base_statuses_deleted: 12
  - non_matching_test_packages_deleted: 3
  - non_matching_base_statuses_deleted: 8
  - total_deleted: 28

If errors occur (now handled gracefully):

[ERROR] Test pack non-matching records cleanup failed (non-critical)
[ERROR] Error in weld_logs-delete-non-matching-test-pack-statuses

Key Improvements

Data Validation

  • Empty strings are now filtered out
  • NULL values are excluded
  • ID validation for base statuses (must be numeric and > 0)

Error Handling

  • Non-breaking errors (job continues even if cleanup fails)
  • Detailed error logging with stack traces
  • Informative success/failure messages

Performance

  • Batch filtering before deletion
  • Efficient array_filter usage
  • Proper indexing usage

Expected Results

Automatic cleanup runs on every weld_log update:

  • Empty records deleted immediately
  • Non-matching records deleted immediately
  • No manual intervention needed
  • Logs show detailed breakdown

How It Works

Automatic Cleanup Flow:

User edits weld_log record
         ↓
SaveTrigger executes
         ↓
delete-non-matching script runs
         ↓
SECTION 1: Delete empty records ✓
         ↓
SECTION 2: Delete non-matching records ✓
         ↓
Cleanup completed (logged)
         ↓
Job continues normally ✓

Prevention Mechanisms:

  1. Automatic: Runs on every SaveTrigger execution
  2. Comprehensive: Handles both empty and non-matching records
  3. Safe: Validates data before deletion
  4. Non-breaking: Errors don't stop the main flow
  5. Logged: Detailed logging for monitoring

Files Modified

Modified:

  1. /app/Http/Controllers/SaveTrigger/weld_logs.php

    • Enhanced error handling around cleanup call
    • Non-breaking error handling
  2. /resources/views/cron/weld_logs-delete-non-matching-test-pack-statuses.blade.php

    • SECTION 1 (NEW): Empty records cleanup
    • SECTION 2 (ENHANCED): Non-matching records cleanup with validation
    • Comprehensive logging
    • Array filtering

Removed (No longer needed):

  1. /resources/views/cron/cleanup-empty-test-package-numbers.blade.php

    • Functionality integrated into delete-non-matching script
  2. /resources/views/admin-ajax/cleanup-empty-test-packages.blade.php

    • No longer needed, cleanup is automatic

Verification Commands

Check for empty test_package_no:

-- Test Packages
SELECT COUNT(*) FROM test_packages 
WHERE (test_package_number = '' OR test_package_number IS NULL);

-- Base Statuses
SELECT COUNT(*) FROM test_pack_base_statuses 
WHERE (test_package_no = '' OR test_package_no IS NULL);

After cleanup, these should return 0.

Support

If issues persist, check logs with:

# Filter for test pack errors
tail -f storage/logs/laravel.log | grep -i "test.pack\|cleanup"

# Check job failures
tail -f storage/logs/laravel.log | grep -i "ExecuteSaveTriggerJob\|timeout"

Last Updated: October 16, 2025
Status: Fixed and Tested