HelloZeroNet/ZeroNet · error · Exception

Dbschema version %s not supported

Error message

Dbschema version %s not supported

What it means

Compatibility guard in DbCursor.getJsonRow: the site's dbschema.json declares a schema['version'] higher than the versions the database layer implements, so no query strategy exists for that row layout. The input at fault is an unsupported dbschema version value; the db must be rebuilt or the client upgraded.

Source

Thrown at src/Db/DbCursor.py:242

        elif self.db.schema["version"] == 2:
            # Separate directory, file_name (easier join)
            res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"directory": directory, "file_name": file_name})
            row = res.fetchone()
            if not row:  # No row yet, create it
                self.execute("INSERT INTO json ?", {"directory": directory, "file_name": file_name})
                res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"directory": directory, "file_name": file_name})
                row = res.fetchone()
        elif self.db.schema["version"] == 3:
            # Separate site, directory, file_name (for merger sites)
            site_address, directory = re.match("^([^/]*)/(.*)$", directory).groups()
            res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"site": site_address, "directory": directory, "file_name": file_name})
            row = res.fetchone()
            if not row:  # No row yet, create it
                self.execute("INSERT INTO json ?", {"site": site_address, "directory": directory, "file_name": file_name})
                res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"site": site_address, "directory": directory, "file_name": file_name})
                row = res.fetchone()
        else:
            raise Exception("Dbschema version %s not supported" % self.db.schema.get("version"))
        return row

    def close(self):
        pass

View on GitHub (pinned to 454c0b2e7e)

Solutions

  1. Update the client to a version supporting the site's dbschema version
  2. Rebuild the site database so it matches a supported schema version
  3. Catch the error and fall back to a schema rebuild (db.rebuild) instead of querying directly
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/Db/DbCursor.py:242 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of HelloZeroNet/ZeroNet@454c0b2e7e (2026-09-02). Data as JSON: /api/errors/93db56898aac4f0b. Report an issue: GitHub.