Skip to main content

When no driver resolves

SQLens supports PostgreSQL 18+ and MySQL 8.4+. When a connection resolves to neither, the run does not quietly check nothing and report a pass — it reports a named undetermined finding and links to the section below that explains that exact case.

That is the whole point. "Nothing was found" and "nothing was looked at" are different outcomes, and a tool that renders them the same way teaches you to trust a green it never earned. Each section names what the run saw, what it therefore did not do, and what would change the answer.

reserved_driver

The connection addresses an engine SQLens deliberately does not support — SQLite, SQL Server, or a MariaDB configured under its own driver name. These are reserved rather than merely unknown: the answer is settled, not missing.

Rules are written against a specific engine's behavior. Applying MySQL's rules to another engine produces advice that is confident and wrong, which is worse than none. Nothing was checked on this connection.

And settled is meant literally: these three are declared non-goals, not a backlog. The supported baseline is PostgreSQL and MySQL. A contribution cannot move an engine out of this list, because the list is a statement about what the rules can honestly claim rather than about how much work has been done.

unknown_driver

The connection names a driver SQLens has never heard of: it is neither built in nor registered through DriverRegistry::extend(). Nothing was checked — an unknown engine is a finding, never a free pass.

Register it yourself if you have a driver for it, or point the run at a connection that uses a supported engine.

missing_driver_key

The connection's configuration declares no driver key at all, so there is nothing to resolve. This is almost always a typo or a half-written connection block rather than a deliberate choice.

Add the driver key to the connection in config/database.php.

connection_not_found

No connection with the configured name exists. The finding lists the connections the application does configure, because the usual cause is a name that drifted — a renamed connection, a copied config, a typo in sqlens.connection.

Fix the name in sqlens.connection, or add the connection.

version_below_floor

The engine is supported; this version of it is not. The server reports a release below the floor (PostgreSQL 18, MySQL 8.4), and the rules describe behavior older releases do not have.

The message says "upgrade", not "wrong engine", because that is a different action for you to take. Upgrade the server — or, if you know exactly what you are doing, pin an assumed version with sqlens.assume_server_version and accept that the run then reasons about the pin rather than about the live instance.

unknown_server_version

The connection opened, but the server's version could not be established. A version SQLens cannot read is a finding, not a pass: version-dependent rules have no window to evaluate against, so they did not run.

Check that the connecting role may read the server version, or pin one with sqlens.assume_server_version.

mariadb_behind_mysql_driver

The connection is configured as mysql, and the server answering is MariaDB. Laravel addresses both through one driver name; they are not one engine. MariaDB does not share MySQL 8.4's online-DDL behavior, so the rules would describe something the server does not do.

Nothing was checked, and nothing will be: MariaDB is a declared non-goal of this package, not a gap waiting to be filled. The baseline is PostgreSQL and MySQL, and it is not changing.

That is a decision about what the package can honestly promise rather than about effort. Every MySQL rule here reasons about MySQL 8.4 semantics — its online-DDL algorithms, its information_schema shapes, its privilege model. MariaDB shares the driver name and the wire protocol and not those semantics, so the same rules applied to it would produce advice that is confident, specific, and about another product. Refusing by name is the only answer that stays true.

unverified_engine_identity

No connection was open, so the configured driver name is all there was to go on — and a driver name is a claim, not proof. SQLens will not assert that a connection really addresses the engine its config says it does without having asked the server.

This is the state a fully offline run lands in. Let the run open a connection, or accept the undetermined for what it is: an honest statement that the engine was never confirmed.