# ERR SCRIPT KILL failed - no script in execution right now

- **ID:** `redis/redis-script-kill-failed-no-script-running`
- **Domain:** redis
- **Category:** runtime_error
- **Error Code:** `ERR`
- **Verification:** ai_generated
- **Fix Rate:** 92%

## Root Cause

A user attempted to run SCRIPT KILL when no Lua script is currently executing, either because the script already finished or the server is not busy.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| redis 6.0 | active | — | — |
| redis 6.2 | active | — | — |
| redis 7.0 | active | — | — |
| redis 7.2 | active | — | — |

## Workarounds

1. **Verify script execution status with `CLIENT LIST` to see if any client is executing a script (look for 'script' flag). If no script is running, the error is harmless; ignore it.** (95% success)
   ```
   Verify script execution status with `CLIENT LIST` to see if any client is executing a script (look for 'script' flag). If no script is running, the error is harmless; ignore it.
   ```
2. **If a script appears stuck but SCRIPT KILL fails, use `MEMORY DOCTOR` to check for memory issues or `SLOWLOG GET` to find long-running commands that may be blocking.** (80% success)
   ```
   If a script appears stuck but SCRIPT KILL fails, use `MEMORY DOCTOR` to check for memory issues or `SLOWLOG GET` to find long-running commands that may be blocking.
   ```
3. **Set a Lua script timeout in redis.conf: `lua-time-limit 5000` (5 seconds) to prevent scripts from running indefinitely, reducing the need for manual SCRIPT KILL.** (90% success)
   ```
   Set a Lua script timeout in redis.conf: `lua-time-limit 5000` (5 seconds) to prevent scripts from running indefinitely, reducing the need for manual SCRIPT KILL.
   ```

## Dead Ends

- **Repeatedly calling SCRIPT KILL until it works** — Calling SCRIPT KILL when no script is running just returns the same error each time; it does not help kill a script that may have already ended. (95% fail)
- **Restarting Redis to clear any phantom scripts** — Restarting is unnecessary if no script is running; it causes downtime and may not address the real issue (e.g., a script that finished but left side effects). (70% fail)
- **Using SHUTDOWN NOSAVE to force stop** — SHUTDOWN NOSAVE is a drastic measure that discards all data; it is only needed when a script is stuck and SCRIPT KILL is refused, not when no script is running. (85% fail)
