【问题标题】:MySQL Default Keyword usage errorsMySQL 默认关键字使用错误
【发布时间】:2009-10-30 20:06:59
【问题描述】:

当我尝试设置默认日期和默认系统日期时,出现以下错误:

MySQL 查询:

create table product_offer_type(object_id INT(19), snapshot_id INT(19), PRIMARY KEY(object_id,snapshot_id), enum_value VARCHAR(64) NOT NULL, external_name VARCHAR(64) NOT NULL, description VARCHAR(255), business_validation INT(1), valid_for_start_date_time DATE  DEFAULT '1900-01-10', valid_for_end_date_time DATE  DEFAULT '4712-01-01', mutation_date_time DATE SYSDATE, mutation_user VARCHAR(32) DEFAULT 'USER');

错误信息:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SYSDATE, mutation_user VARCHAR(32) DEFAULT 'USER')' at line 1

任何指针都将受到高度赞赏。

【问题讨论】:

  • 为什么其他答案被删除了?

标签: sql mysql default


【解决方案1】:

如果您尝试跟踪该行的最后修改时间,我通常使用类似

mutation_date_time timestamp default current_timestamp, on update current_timestamp

如果您真的想要日期而不是时间戳,您可能需要稍作修改。

【讨论】:

  • 我正在寻找日期而不是时间戳,我将尝试修改提供的方法并在几分钟内更新评论。
  • ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'current_date, mutation_user VARCHAR(32) DEFAULT 'USER')' 附近使用正确的语法
  • current_timestamp 仅适用于列的时间戳类型,因此您必须将列类型转换为时间戳才能自动输入这些时间。
  • 我不认为 current_date 已定义 - 只需使用 current_timestamp - 分配给日期字段时应该正确舍入(我认为 - 一定要测试它)。
  • @Rachel .. current_date 无法正常工作 .. 无法动态设置日期列的默认值,所以您只能使用时间戳列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多