Index: /usr/local/src/django-1.1/django/db/backends/postgresql/client.py
===================================================================
--- /usr/local/src/django-1.1/django/db/backends/postgresql/client.py	(revision 10549)
+++ /usr/local/src/django-1.1/django/db/backends/postgresql/client.py	(working copy)
@@ -1,14 +1,11 @@
-import os
-import sys
-
 from django.db.backends import BaseDatabaseClient
 
 class DatabaseClient(BaseDatabaseClient):
-    executable_name = 'psql'
+    executable_names = ('psql',)
 
     def runshell(self):
         settings_dict = self.connection.settings_dict
-        args = [self.executable_name]
+        args = []
         if settings_dict['DATABASE_USER']:
             args += ["-U", settings_dict['DATABASE_USER']]
         if settings_dict['DATABASE_HOST']:
@@ -16,8 +13,5 @@
         if settings_dict['DATABASE_PORT']:
             args.extend(["-p", str(settings_dict['DATABASE_PORT'])])
         args += [settings_dict['DATABASE_NAME']]
-        if os.name == 'nt':
-            sys.exit(os.system(" ".join(args)))
-        else:
-            os.execvp(self.executable_name, args)
+        self.run_executable(args)
 
Index: /usr/local/src/django-1.1/django/db/backends/sqlite3/client.py
===================================================================
--- /usr/local/src/django-1.1/django/db/backends/sqlite3/client.py	(revision 10549)
+++ /usr/local/src/django-1.1/django/db/backends/sqlite3/client.py	(working copy)
@@ -1,16 +1,9 @@
-import os
-import sys
-
 from django.db.backends import BaseDatabaseClient
 
 class DatabaseClient(BaseDatabaseClient):
-    executable_name = 'sqlite3'
+    executable_names = ('sqlite3',)
 
     def runshell(self):
-        args = [self.executable_name,
-                self.connection.settings_dict['DATABASE_NAME']]
-        if os.name == 'nt':
-            sys.exit(os.system(" ".join(args)))
-        else:
-            os.execvp(self.executable_name, args)
+        args = [self.connection.settings_dict['DATABASE_NAME']]
+        self.run_executable(args)
 
Index: /usr/local/src/django-1.1/django/db/backends/mysql/client.py
===================================================================
--- /usr/local/src/django-1.1/django/db/backends/mysql/client.py	(revision 10549)
+++ /usr/local/src/django-1.1/django/db/backends/mysql/client.py	(working copy)
@@ -1,14 +1,10 @@
-import os
-import sys
-
 from django.db.backends import BaseDatabaseClient
 
 class DatabaseClient(BaseDatabaseClient):
-    executable_name = 'mysql'
+    executable_names = ('mysql', 'mysql5')
 
     def runshell(self):
         settings_dict = self.connection.settings_dict
-        args = [self.executable_name]
         db = settings_dict['DATABASE_OPTIONS'].get('db', settings_dict['DATABASE_NAME'])
         user = settings_dict['DATABASE_OPTIONS'].get('user', settings_dict['DATABASE_USER'])
         passwd = settings_dict['DATABASE_OPTIONS'].get('passwd', settings_dict['DATABASE_PASSWORD'])
@@ -17,6 +13,7 @@
         defaults_file = settings_dict['DATABASE_OPTIONS'].get('read_default_file')
         # Seems to be no good way to set sql_mode with CLI.
 
+        args = []
         if defaults_file:
             args += ["--defaults-file=%s" % defaults_file]
         if user:
@@ -30,8 +27,5 @@
         if db:
             args += [db]
 
-        if os.name == 'nt':
-            sys.exit(os.system(" ".join(args)))
-        else:
-            os.execvp(self.executable_name, args)
+        self.run_executable(args)
 
Index: /usr/local/src/django-1.1/django/db/backends/oracle/client.py
===================================================================
--- /usr/local/src/django-1.1/django/db/backends/oracle/client.py	(revision 10549)
+++ /usr/local/src/django-1.1/django/db/backends/oracle/client.py	(working copy)
@@ -1,16 +1,9 @@
-import os
-import sys
-
 from django.db.backends import BaseDatabaseClient
 
 class DatabaseClient(BaseDatabaseClient):
-    executable_name = 'sqlplus'
+    executable_names = ('sqlplus',)
 
     def runshell(self):
         conn_string = self.connection._connect_string()
-        args = [self.executable_name, "-L", conn_string]
-        if os.name == 'nt':
-            sys.exit(os.system(" ".join(args)))
-        else:
-            os.execvp(self.executable_name, args)
-
+        args = ["-L", conn_string]
+        self.run_executable(args)
Index: /usr/local/src/django-1.1/django/db/backends/__init__.py
===================================================================
--- /usr/local/src/django-1.1/django/db/backends/__init__.py	(revision 10549)
+++ /usr/local/src/django-1.1/django/db/backends/__init__.py	(working copy)
@@ -16,6 +16,9 @@
     # Python 2.3 fallback
     from django.utils import _decimal as decimal
 
+import os
+import sys
+
 from django.db.backends import util
 from django.utils import datetime_safe
 
@@ -539,9 +542,9 @@
     This class encapsulates all backend-specific methods for opening a
     client shell.
     """
-    # This should be a string representing the name of the executable
-    # (e.g., "psql"). Subclasses must override this.
-    executable_name = None
+    # This should be a tuple with strings representing the name (or names) of the executable
+    # names to try (e.g., ("mysql", "mysql5")). Subclasses must override this.
+    executable_names = None
 
     def __init__(self, connection):
         # connection is an instance of BaseDatabaseWrapper.
@@ -549,6 +552,24 @@
 
     def runshell(self):
         raise NotImplementedError()
+        
+    def run_executable(self, args):
+        """
+        Will try to run the first executable it finds in the 
+        executable_names tuple.
+        """
+        for executable_name in self.executable_names:
+            try:
+                cmd = (executable_name,) + tuple(args)
+                if os.name == 'nt':
+                    sys.exit(os.system(" ".join(cmd)))
+                else:
+                    os.execvp(executable_name, cmd)
+            except OSError:
+                # The executable was not found; try the next
+                # one in the tuple.
+                continue
+            break
 
 class BaseDatabaseValidation(object):
     """
