1

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

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'",但我仍然收到警告!

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

多谢你们。

4

1 回答 1

0

这里的作者django-mysql

您在字典中有两个'init_command'键,因此解析后只有第二个键会在其中 - Python 只是默默地处理这样的重复项。提示:用于flake8lint 您的源代码,因为它会检测到这一点并警告您。

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

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

于 2018-06-22T21:20:00.287 回答