Fix kubectl exec: specify container explicitly to avoid selection messages

This commit is contained in:
Vaibhav Pathak 2026-01-19 16:25:26 +05:30
parent 6ce7116c4b
commit 3a2f9d4677

View File

@ -723,12 +723,26 @@ spec:
fi fi
# Helper function to run MySQL commands via kubectl exec # Helper function to run MySQL commands via kubectl exec
# Using -c to specify container explicitly to avoid kubectl container selection messages
MYSQL_CONTAINER=$(kubectl get pod -n "$NAMESPACE" "$MYSQL_POD" -o jsonpath='{.spec.containers[0].name}' 2>/dev/null)
echo "MySQL container name: $MYSQL_CONTAINER"
run_mysql() { run_mysql() {
local result local result
result=$(kubectl exec -n "$NAMESPACE" "$MYSQL_POD" -- mysql -u "$MYSQL_USER" -p"$MYSQL_PWD" "$MYSQL_DB" -sN -e "$1" 2>&1) || { local exit_code
# Run kubectl exec with explicit container, redirect kubectl stderr to /dev/null
# but capture MySQL output (including MySQL warnings on stderr)
result=$(kubectl exec -n "$NAMESPACE" "$MYSQL_POD" -c "$MYSQL_CONTAINER" -- \
mysql -u "$MYSQL_USER" -p"$MYSQL_PWD" "$MYSQL_DB" -sN -e "$1" 2>&1)
exit_code=$?
# Filter out MySQL password warning
result=$(echo "$result" | grep -v "Using a password on the command line interface can be insecure")
if [ $exit_code -ne 0 ]; then
echo " MySQL error: $result" >&2 echo " MySQL error: $result" >&2
return 1 return 1
} fi
echo "$result" echo "$result"
} }