警告:Django_mysql.w001

WARNING: Django_mysql.w001

我正在使用 Python 3.6 开发电子商务网站。我全新安装了 Django 2.0.6,并通过在 settings.py 中定义数据库变量将其连接到 MySQL 数据库(在本地主机上),如下所示:

DATABASES = {
    'default': {
        'ENGINE'    : 'django.db.backends.mysql',
        'NAME'      : 'moda',
        'OPTIONS'   : {
              'init_command'  : "SET sql_mode='STRICT_TRANS_TABLES'",
              'init_command'  : 'SET innodb_strict_mode=1',
              'charset'       : 'utf8mb4',
        },

        'USER'      : 'root',
        'PASSWORD'  : '',
        'SERVER'    : 'localhost',
        'PORT'      : '3306'

     }
}

并且在使用 cmd 运行 python manage.py check 命令之后,我收到以下警告:

(django_mysql.W001) MySQL Strict Mode is not set for database connection 'default'
    HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://django-mysql.readthedocs.io/en/latest/checks.html#django-mysql-w001-strict-mode

我什至使用了 ' init_command': "SET sql_mode='STRICT_TRANS_TABLES'",但我仍然收到警告!

如果有专家能告诉我解决这个问题的正确方法,我将不胜感激!

谢谢大家。

django-mysql 的作者在这里。

字典中有两个 'init_command' 键,因此解析后只有第二个键在其中 - Python 只是像这样静默处理重复项。提示:使用 flake8 对您的源代码进行 lint,因为它会检测到这一点并向您发出警告。

此外,两个 SET 命令可以组合,给出:

...
    'OPTIONS': {
        'init_command': "SET sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
        'charset': 'utf8mb4',
    },
...

HTH!