summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormanav014 <dpsman13016@gmail.com>2020-10-14 23:37:57 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-17 12:24:36 +0200
commitaf87574a3c3df61cf2f829909977e347118e6480 (patch)
tree3d2092a587ce62610f8780c629dab34572f3876e
parent98126cdfaf632abc8f0b5e65910e46a4eedc4641 (diff)
Fixed #6517 -- Made dbshell use charset option on MySQL.
Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com>
-rw-r--r--django/db/backends/mysql/client.py3
-rw-r--r--tests/dbshell/test_mysql.py17
2 files changed, 20 insertions, 0 deletions
diff --git a/django/db/backends/mysql/client.py b/django/db/backends/mysql/client.py
index 904c450cef..a94d388ccd 100644
--- a/django/db/backends/mysql/client.py
+++ b/django/db/backends/mysql/client.py
@@ -21,6 +21,7 @@ class DatabaseClient(BaseDatabaseClient):
client_cert = settings_dict['OPTIONS'].get('ssl', {}).get('cert')
client_key = settings_dict['OPTIONS'].get('ssl', {}).get('key')
defaults_file = settings_dict['OPTIONS'].get('read_default_file')
+ charset = settings_dict['OPTIONS'].get('charset')
# Seems to be no good way to set sql_mode with CLI.
if defaults_file:
@@ -42,6 +43,8 @@ class DatabaseClient(BaseDatabaseClient):
args += ["--ssl-cert=%s" % client_cert]
if client_key:
args += ["--ssl-key=%s" % client_key]
+ if charset:
+ args += ['--default-character-set=%s' % charset]
if db:
args += [db]
args.extend(parameters)
diff --git a/tests/dbshell/test_mysql.py b/tests/dbshell/test_mysql.py
index 95faa21647..e09644962b 100644
--- a/tests/dbshell/test_mysql.py
+++ b/tests/dbshell/test_mysql.py
@@ -59,6 +59,23 @@ class MySqlDbshellCommandTestCase(SimpleTestCase):
}),
)
+ def test_options_charset(self):
+ self.assertEqual(
+ [
+ 'mysql', '--user=someuser', '--password=somepassword',
+ '--host=somehost', '--port=444',
+ '--default-character-set=utf8', 'somedbname',
+ ],
+ self.get_command_line_arguments({
+ 'NAME': 'somedbname',
+ 'USER': 'someuser',
+ 'PASSWORD': 'somepassword',
+ 'HOST': 'somehost',
+ 'PORT': 444,
+ 'OPTIONS': {'charset': 'utf8'},
+ }),
+ )
+
def test_can_connect_using_sockets(self):
self.assertEqual(
['mysql', '--user=someuser', '--password=somepassword',