diff --git a/django/db/backends/mysql/client.py b/django/db/backends/mysql/client.py index 129f86a951..3743225957 100644 --- a/django/db/backends/mysql/client.py +++ b/django/db/backends/mysql/client.py @@ -1,12 +1,14 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'mysql' def runshell(self): settings_dict = self.connection.settings_dict - args = [''] + 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']) @@ -14,7 +16,7 @@ class DatabaseClient(BaseDatabaseClient): port = settings_dict['DATABASE_OPTIONS'].get('port', settings_dict['DATABASE_PORT']) defaults_file = settings_dict['DATABASE_OPTIONS'].get('read_default_file') # Seems to be no good way to set sql_mode with CLI. - + if defaults_file: args += ["--defaults-file=%s" % defaults_file] if user: @@ -28,4 +30,8 @@ class DatabaseClient(BaseDatabaseClient): if db: args += [db] - os.execvp(self.executable_name, args) + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) + diff --git a/django/db/backends/oracle/client.py b/django/db/backends/oracle/client.py index 84193eaedc..ccc64ebffc 100644 --- a/django/db/backends/oracle/client.py +++ b/django/db/backends/oracle/client.py @@ -1,5 +1,7 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'sqlplus' @@ -7,4 +9,8 @@ class DatabaseClient(BaseDatabaseClient): def runshell(self): conn_string = self.connection._connect_string() args = [self.executable_name, "-L", conn_string] - os.execvp(self.executable_name, args) + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) + diff --git a/django/db/backends/postgresql/client.py b/django/db/backends/postgresql/client.py index 695017130f..13273b9fb5 100644 --- a/django/db/backends/postgresql/client.py +++ b/django/db/backends/postgresql/client.py @@ -1,5 +1,7 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'psql' @@ -14,4 +16,8 @@ class DatabaseClient(BaseDatabaseClient): if settings_dict['DATABASE_PORT']: args.extend(["-p", str(settings_dict['DATABASE_PORT'])]) args += [settings_dict['DATABASE_NAME']] - os.execvp(self.executable_name, args) + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) + diff --git a/django/db/backends/sqlite3/client.py b/django/db/backends/sqlite3/client.py index 0b65444d74..8836b09899 100644 --- a/django/db/backends/sqlite3/client.py +++ b/django/db/backends/sqlite3/client.py @@ -1,9 +1,16 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'sqlite3' def runshell(self): - args = ['', self.connection.settings_dict['DATABASE_NAME']] - os.execvp(self.executable_name, args) + 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) +