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

Django+PostgreSQL触发器报错:column 'now' does not exist 求助

问题分析与解决

错误根源

触发器函数tg_fun_name()里的v_date_ini := now::date是语法错误。PostgreSQL中,now不是内置常量或列,获取当前时间的正确写法是函数调用now()。不加括号的话,数据库会把now当成表的列名,而你的表中没有这个列,所以触发UndefinedColumn错误。

解决步骤

  1. 找到对应的PL/pgSQL触发器函数tg_fun_name(),定位到第13行的赋值语句。
  2. 将错误代码:
    v_date_ini := now::date
    
    替换为以下两种正确写法之一:
    • 用now()函数转换日期:
      v_date_ini := now()::date
      
    • 直接使用CURRENT_DATE(更简洁,本身就是日期类型,无需转换):
      v_date_ini := CURRENT_DATE
      
  3. 重新创建触发器函数(或执行ALTER FUNCTION更新),然后重新启用触发器。
  4. 测试数据复制功能,确认错误消失。

额外说明

Django模型里的first_subscribed = models.DateField(auto_now=True)本身没有问题,它是在ORM层面自动填充当前日期,和触发器的错误无关。禁用触发器后,错误代码不再执行,所以系统恢复正常。

内容的提问来源于stack exchange,提问作者Israel Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:17:32