Skip to content

Troubleshooting

Symptoms tDB produces, what causes them, and what to do. Ordered most likely first.

SymptomCause
No such exporttDB has not loaded yet
Only superusers can perform this actionCredentials no longer match the database
The PocketBase setup screen openedYou reached a different instance
Batch requests are not allowedPocketBase's batch API is off
An error naming a SQL constructNo faithful SQLite translation
Admin UI unreachable from outsidetLib's port is closed or not forwarded
Waiting for tLib's HTTP listenerNot an error
Update tLibtLib never reported HTTP readiness
A table does not existIts schema was never imported
Remote mode never reports readyThe health probe failed

No such export when calling exports.tDB

The calling resource started before tDB, not the database being slow — a call made before the database is up parks until it answers.

  1. Check ensure tDB sits above the calling resource in server.cfg. This is almost always it.
  2. Confirm tDB started — a config error stops the resource and the startup box says so.
  3. If the resource must start first, wrap the call in exports.tDB:onReady(function() end).

Only superusers can perform this action, repeating

The superuser credentials tDB is using no longer match the database.

  1. Unset tdb_superuser_email and tdb_superuser_password in server.cfg, and delete the Config.Superuser block from config.local.lua.
  2. Restart. tDB reprovisions the superuser, writes the new credentials to config.local.lua and prints the password once.

Fixed when the startup box reports the client authenticated.

The PocketBase setup screen opened in my browser

The instance you reached is not the one tDB started. Find the second PocketBase bound to that port and stop it.

Batch requests are not allowed

PocketBase's batch API is off by default. Enable it in Admin → Settings → Batch API. runTransaction needs no such setting and is usually the better choice.

An error naming a SQL construct

That statement has no SQLite translation. Check the name against refused constructs, then rewrite it or move it to raw SQL and write SQLite directly.

The admin UI is not reachable from outside

Most often tLib's port is closed on the host or not forwarded in NAT.

  1. Open tLib's port — tlib_http_port, default 7777 — in the host firewall and forward it in NAT, following opening tLib's port. Test from outside the network; a probe from the server itself can pass on a port the internet cannot reach.
  2. Confirm Config.ExposeAdmin = true.
  3. Confirm tLib is running and reports its HTTP listener up.
  4. Confirm the port you forwarded is tLib's, not PocketBase's internal 8090.

The startup box says Waiting for tLib's HTTP listener

Not an error: tLib's router is not up yet. The admin URL appears as soon as tLib reports ready. If it never clears, tLib is failing to bind — check tLib's log and whether its port is taken.

The startup box tells me to update tLib

tLib did not report HTTP readiness, so no admin URL is published. Install tLib 1.0 or newer, start it before tDB, and read tLib's startup output for the listener error. The database is unaffected — only the admin UI is.

A script says a table does not exist

Its schema was never imported; tDB starts empty. Put the dump in tDB/sql/ and restart — see Importing .sql files. Then check tdb sql status: a FAILED row names the statement that stopped it, and a PARTIAL row means the schema is there but some triggers were skipped.

Remote mode never reports ready

tDB dials <RemoteHost>:<RemotePort>/api/health and expects a 200 before registering anything.

  1. Confirm both RemoteHost and RemotePort are set. One alone does nothing.
  2. Open that health URL from the game server itself, not from your desktop.
  3. Check the remote PocketBase is reachable on that port, not only behind a proxy on another.

Getting help

Open an issue on the repository with the exact error text as text rather than a screenshot, the full startup box, your config.lua (it holds no credentials, so it is safe to paste), and the statement involved if it is a SQL error.

Still stuck? Support can answer it directly.

Was this page helpful?