﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30636	"mysqldump errors out with ""unknown variable"" when --parallel and --defaults-file"	Yann Sionneau	nobody	"What happens?
Running tests gives:
Creating test database for alias 'default'...
Cloning test database for alias 'default'...
mysqldump: unknown variable 'defaults-file=/var/lib/jenkins/workspace/Pytition_master/my.cnf'
And then every test fails with 'E' (error).

How to reproduce?
1/ Configure your database like this:

{{{
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf', # file with credentials and db name
        },
    }
}
}}}


2/ run tests with ""manage.py test --parallel 2 appname""
The important here is ""--parallel 2"" (or more than 2)

Explanations?

This happens because Django tries to clone the database using mysqldump: https://github.com/django/django/blob/master/django/db/backends/mysql/creation.py#L60
In my case I've printed the arguments, it gives:
dump_cmd: ['mysqldump', '--routines', '--events', '--defaults-file=/var/lib/jenkins/workspace/Pytition_master/my.cnf', 'test_']
load_cmd: ['mysql', '--defaults-file=/var/lib/jenkins/workspace/Pytition_master/my.cnf', 'test__1']
mysqldump: unknown variable 'defaults-file=/var/lib/jenkins/workspace/Pytition_master/my.cnf'

However, it seems that, even if this is undocumented in mysqldump's man page, it does only support --defaults-file parameter when in first position.

See the Note on this StackOverflow answer: https://stackoverflow.com/questions/10725209/specifying-separate-config-file-on-mysqldump-command-line

Proposed solution:
Test if read_default_file is in settings, and in this case put it as first argument to mysqldump"	Bug	new	Database layer (models, ORM)	dev	Normal				Unreviewed	0	0	0	0	0	0
