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"

Reply via email to