Troubleshoot dh#
Command not found or wrong version#
Run command -v dh on Linux/macOS or Get-Command dh in PowerShell. Confirm the directory containing the intended executable is on PATH, then open a new terminal and run dh version. See Installation.
Browser login refuses to start#
If the error says DH_TOKEN is set, unset it before dh auth login. Token authentication and browser credential storage are separate modes. In Docker, use DH_TOKEN; run browser login with the native CLI.
Authentication fails or uses the wrong account#
dh auth status
dh config list
DH_TOKEN overrides saved credentials, and DH_HOST overrides the saved host. Check both before logging in again. A custom DH_OAUTH_CLIENT_ID must match the client that issued the credentials. For ordinary production login, unset unnecessary overrides and use dh auth login --hostname www.dolthub.com.
A 403 means the authenticated identity lacks permission. Check the database’s permissions, not just whether login succeeded.
Could not determine a database#
Supply the database explicitly:
dh db view --db OWNER/people
Or save it with dh config set db OWNER/people. Remote discovery requires dolt and a local repository with a recognized DoltHub remote. Multiple candidates require a choice; scripts should provide --db. See Configuration.
A command is using the wrong database#
DH_DB overrides the saved database, and both override local remote discovery. Explicit --db takes precedence over all three. DH_REPO remains accepted as a compatibility alias for DH_DB, but DH_DB wins when both are set. dh config list shows environment/config values but does not resolve local remotes.
SQL flags are rejected#
Reads require --branch or --ref; supplying both is an error. Writes require --write --branch. Do not mix --ref, --limit, or --timeout with write mode. Query arguments and --file are mutually exclusive. See SQL modes.
JSON field is unknown or unavailable#
Use a field listed in the command reference. SQL reads return query fields such as columns,rows,status; writes return job fields such as id,status,result. For acceptance without waiting, use --no-wait --json id,href. Most --jq and --template flags require --json; dh api is the exception.
An import fails#
Check the target branch, input format, regular-file requirement, and 1 GiB size limit. The default mode creates a table; use an existing-table mode when the table already exists. JSON requires --update or --replace. In Docker, use the file’s mounted container path and ensure UID 1001 can read it.
Expired or failed uploads cannot resume. After an ambiguous submission failure, use dh job list --db OWNER/DATABASE before retrying. See import recovery.
A wait was interrupted#
The remote job may still be running. Find it with dh job list, inspect it with dh job view JOB_ID, or resume waiting with dh job watch JOB_ID. Use the host where the job was submitted. A successful submission is not the same as a successful job.
Report a problem#
Include dh version, your operating system, the command with credentials removed, and the error message when opening an issue in dolthub/cli. Include a job ID when relevant, but do not include tokens or credential files.