the input device is not a TTY
docker run/exec was called with -t (allocate a terminal) in a context with no terminal — CI, cron, a pipe or a script.
Seen on:
Docker
Meaning
-t needs an interactive terminal. In CI, cron jobs, or when piping input (docker exec -it db mysql < dump.sql) there is none. Drop -t (keep -i if you pipe stdin).
Common causes
- -it used in CI/cron/scripts
- Piping input into docker exec -it
- Git Bash/mintty on Windows without winpty
⚡ Quick fix
- Use -i without -t when piping
- Remove -it in non-interactive scripts
- On Git Bash prefix with winpty
Detailed fix by platform
Docker
docker exec -i db mysql -uroot -p"$PW" app < dump.sql
Docker Compose
docker compose exec -T db psql -U postgres < dump.sql # -T disables the TTY
How to diagnose
- Context — Interactive terminal or script?
- Stdin — Is input piped?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- AADSTS70021 AADSTS70021: No matching federated identity record found for presented assertion (GitHub Actions / workload identity)
- another operation is in progress Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress
- Command CodeSign failed Command CodeSign failed with a nonzero exit code (errSecInternalComponent / resource fork, Finder information not allowed)
Most viewed in Docker
Other ways to find it
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 7 Oct 2026