This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 521ad026ee4 cli: Fix TypeError in 'airflow db shell' when database
name is missing (#68913)
521ad026ee4 is described below
commit 521ad026ee46fef7ed0241b6a462e71ca151edf5
Author: Sejal Gupta <[email protected]>
AuthorDate: Thu Jul 30 15:42:37 2026 +0530
cli: Fix TypeError in 'airflow db shell' when database name is missing
(#68913)
---
airflow-core/src/airflow/cli/commands/db_command.py | 6 ++++++
airflow-core/tests/unit/cli/commands/test_db_command.py | 17 +++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/airflow-core/src/airflow/cli/commands/db_command.py
b/airflow-core/src/airflow/cli/commands/db_command.py
index 4c15ccc2d48..54de07299c6 100644
--- a/airflow-core/src/airflow/cli/commands/db_command.py
+++ b/airflow-core/src/airflow/cli/commands/db_command.py
@@ -306,6 +306,12 @@ def shell(args):
url = settings.get_engine().url
print(f"DB: {url!r}")
+ if not url.database:
+ raise ValueError(
+ "The metadata database name is missing from the connection URI. "
+ "Please check your AIRFLOW__DATABASE__SQL_ALCHEMY_CONN
configuration."
+ )
+
if url.get_backend_name() == "mysql":
with NamedTemporaryFile(suffix="my.cnf") as f:
f.write(_build_mysql_cnf(url))
diff --git a/airflow-core/tests/unit/cli/commands/test_db_command.py
b/airflow-core/tests/unit/cli/commands/test_db_command.py
index 76e391e1144..e6168605a3f 100644
--- a/airflow-core/tests/unit/cli/commands/test_db_command.py
+++ b/airflow-core/tests/unit/cli/commands/test_db_command.py
@@ -534,6 +534,23 @@ class TestCliDb:
with pytest.raises(AirflowException, match=r"Unknown driver:
invalid\+psycopg"):
db_command.shell(self.parser.parse_args(["db", "shell"]))
+ @mock.patch(
+ "airflow.cli.commands.db_command.settings.engine.url",
+ make_url("postgresql+psycopg2://postgres:airflow@postgres/"),
+ )
+ @pytest.mark.parametrize(
+ "conn_uri",
+ [
+ pytest.param("postgresql://postgres:postgres@postgres:5432",
id="db-name-none"),
+ pytest.param("postgresql://postgres:postgres@postgres:5432/",
id="db-name-empty"),
+ ],
+ )
+ def test_db_shell_missing_database_name(self, conn_uri):
+ """Assert that an explicit ValueError is raised when the database name
is missing."""
+ with mock.patch("airflow.cli.commands.db_command.settings.engine.url",
make_url(conn_uri)):
+ with pytest.raises(ValueError, match="The metadata database name
is missing"):
+ db_command.shell(self.parser.parse_args(["db", "shell"]))
+
def test_run_db_downgrade_command_success_and_messages(self, capsys):
class Args:
to_revision = "abc"