You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django连接MariaDB问题:未开启Strict Mode,无法执行数据库迁移

Django数据库迁移问题排查与解决

问题现象

运行python manage.py migrate时出现警告,且迁移未正常执行,命令输出如下:

(env) C:\Users\Mercadotecnia\PycharmProjects\practica>python manage.py migrate
系统检查发现一些问题:

警告:
?: (mysql.W002) 数据库连接'default'未设置MariaDB Strict Mode
提示:MariaDB的Strict Mode可通过将警告升级为错误的方式,修复MariaDB中的许多数据完整性问题,例如插入时的数据截断问题。强烈建议启用该模式。
要执行的操作:
应用所有迁移:admin, auth, contenttypes, sessions
正在运行迁移:
无迁移可应用。

关联的models.py代码:

from django.db import models

class Libro(models.Model):
    id = models.AutoField(primary_key=True)
    titulo = models.CharField(max_length=100, verbose_name="Titulo")
    imagen = models.ImageField(upload_to='imagenes/', verbose_name="Imagen", null=True),
    descripcion = models.TextField(verbose_name="Descripcion", null=True)
    class Meta:
        db_table = 'Libro'

解决步骤

1. 启用MariaDB Strict Mode

打开Django项目的settings.py,找到DATABASES配置块,为default连接添加OPTIONS参数开启严格模式:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '你的数据库名称',
        'USER': '数据库账号',
        'PASSWORD': '数据库密码',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'sql_mode': 'STRICT_TRANS_TABLES',
        },
    }
}

配置完成后重新运行迁移命令,该警告会消失。

2. 修复模型代码并生成迁移文件

提示“无迁移可应用”是因为未为Libro模型生成迁移文件,且模型代码存在语法问题:

  • 先修复models.py中imagen字段的多余逗号:
# 修改前
imagen = models.ImageField(upload_to='imagenes/', verbose_name="Imagen", null=True),
# 修改后
imagen = models.ImageField(upload_to='imagenes/', verbose_name="Imagen", null=True)
  • 执行命令生成迁移文件:
python manage.py makemigrations
  • 最后应用迁移:
python manage.py migrate

内容的提问来源于stack exchange,提问作者Sistemas Kn-t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:45:30