django建表的时候出现sql_mode的警告

执行

python manage.py migrate

建表的时候,遇到如下的警告:

?: (mysql.W002) 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://docs.djangoproject.com/en/1.11/ref/databases/#mysql-sql-mode

大意就是没有给mysql连接启用严格模式,而严格模式能解决很多数据完整性问题,官方墙裂建议开启。

严格模式对于数据完整性校验比较严格,对SQL语句的健壮性要求更高,比如不允许NOT NULL字段插入没有默认值的数据,以及上面提到的插入数据被截断提示由警告变成错误。

消除这个警告有两种方案:

  1. OPTIONS添加开启的严格命令,对当前连接生效
DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'stock',
          'USER': 'root',
          'PASSWORD': 'root',
          'HOST':'127.0.0.1',
          'PORT':'3306',
          'OPTIONS': {
              "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",                                                              
          }
      }
  }
  1. 修改myql的配置文件/etc/my.cnf,重启后对所有连接生效
    [mysqld]下面添加如下列:
sql_mode=STRICT_TRANS_TABLES

重启MySql服务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容