django - 设置中带有数据库URL的MySQL严格模式

时间:2017-09-27 07:04:52

标签: python mysql django django-settings

我在我的设置中使用数据库URL字符串,如:

DATABASES = {
    'default': "mysql://root:@localhost:3306/mydb"
}

当我迁移时,我收到此警告:

MySQL Strict Mode is not set for database connection 'default'

现在我的问题是:我如何将这两件事结合起来?

我无法使用“常规”方式使用字典设置数据库设置,因为我的数据库网址来自环境变量。

提前谢谢!

3 个答案:

答案 0 :(得分:2)

您可以随后更新设置:

DATABASES['default']['OPTIONS'] = {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}

答案 1 :(得分:1)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': 'test123',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            'charset': 'utf8mb4',
        }
    }
}

尝试在settings.py中为init_command提供数据库选项 如果想了解更多信息,请参阅文档django_mysql.W001: Strict Mode

答案 2 :(得分:0)

我认为这个会帮助你。 您可以将选项作为URL

中的查询字符串传递
@Documented
@Retention(RUNTIME)
@Target(METHOD)
public @interface AsyncTask {
}