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

Django数据存储报错:时间类型语法无效,邮件发送成功但未入库

解决Django邮件发送成功但数据库存储报错(Invalid syntax for time type)

问题分析

报错ERROR: Invalid syntax for time type: "avipacich"说明数据库插入时,试图将字符串值写入时间类型字段,但你的Messange模型中并没有定义时间字段,核心原因是数据库表结构和Django模型不同步——大概率是之前模型存在时间字段(比如created_at),后来删除但未同步数据库,导致插入数据时数据库期望接收时间值,却收到了字符串内容。

解决步骤

方案1:通过Django迁移同步模型与数据库

  1. 先备份数据库数据(避免数据丢失)
  2. 找到对应app下的migrations目录,删除除__init__.py外的所有迁移文件
  3. 运行命令生成新的迁移文件:
    python manage.py makemigrations
    
  4. 应用迁移同步数据库结构:
    python manage.py migrate
    
    如果是首次创建该模型的迁移,可添加--fake-initial参数避免冲突:
    python manage.py migrate --fake-initial
    

方案2:手动修正数据库表结构

直接登录数据库(以PostgreSQL/MySQL为例),执行SQL语句查看并修改service_messange表:

  1. 查看表字段结构:
    -- PostgreSQL示例
    SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'service_messange';
    -- MySQL示例
    DESCRIBE service_messange;
    
  2. 删除模型中不存在的时间类型字段(比如名为created_at的datetime字段):
    ALTER TABLE service_messange DROP COLUMN 多余的时间字段名;
    

额外优化建议

  • 修正模型拼写错误:Messange改为Message,避免后续混淆
  • 修复__str__方法的f-string语法错误:
    def __str__(self):
        return f"{self.body}"  # 原代码是f'(self.body)',缺少大括号,无法正确显示内容
    

内容的提问来源于stack exchange,提问作者Eva Smirnova

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:10:35