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

使用HeidiSQL导入MySQL的SQL文件报错1064怎么解决?

SQL Error (1064): You have an error in your SQL syntax; check the manual that correspondes to your MySQL server version for the right syntax to use near ‘curdate()) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC’ at line 17

问题原因

该报错属于MySQL语法错误,触发原因集中在两类:

  1. 最常见:你的MySQL服务版本低于8.0.13,不支持DATE类型字段使用CURDATE()函数作为默认值。8.0.13之前仅TIMESTAMP、DATETIME两类时间类型支持动态函数默认值。
  2. 语法书写错误:SQL文件第17行前后的字段定义存在语法问题,比如前一个字段末尾漏写逗号、CURDATE()被错误包裹了引号/反引号、字段列表括号不匹配等,导致SQL解析到curdate()位置时识别失败。
排查&解决步骤
  • 第一步:用文本编辑器打开待导入的.sql文件,跳转至第17行,定位curdate()所在的完整字段定义。
  • 第二步:执行SELECT VERSION();查询当前MySQL服务的版本号,匹配对应场景处理:

    场景1:版本低于8.0.13,DATE字段设置了DEFAULT curdate()

    三选一解决即可:
    • 升级MySQL服务到8.0.13及以上版本,直接兼容原有语法
    • 修改字段类型为DATETIME/TIMESTAMP,同步调整默认值:
      -- 原错误写法示例
      `create_date` date DEFAULT curdate(),
      -- 修改后写法
      `create_date` datetime DEFAULT CURRENT_TIMESTAMP,
      
    • 移除该字段的默认值设置,改为业务代码插入数据时主动传入当前日期,或者新增插入触发器自动补全日期。

    场景2:版本符合要求,存在语法错误

    检查17行前后的字段定义:
    • 确认前一个字段定义末尾是否漏写英文逗号
    • 确认curdate()没有被单引号/双引号/反引号包裹,函数不需要加任何引号
    • 确认CREATE TABLE的字段列表左右括号完整,没有多余符号
      修改完语法问题后重新导入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:36:04