解决Mysql建表时报错invalid ON UPDATE clause for 'create_date' column

 更新时间:2023年12月20日 09:07:05   作者:BugCounter  
这篇文章主要介绍了解决Mysql建表时报错invalid ON UPDATE clause for 'create_date' column问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Mysql建表时报错invalid ON UPDATE clause for 'create_date' column

这个错误是由于mysql 版本问题导致的

  `create_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

这是建表语句。MySQL 5.5 每个表只允许一个列的默认值根据时间戳生成时间

可以查看一下mysql的版本号:

show variables like 'innodb_version';

MySQL创建表易错

场景

提示:DDL - 表操作 - 创建:

通过 MySQL 中的SQL语句创建表遇到的各种报错

问题描述1

一开始是以为输入分号就可以成功创建,结果如下所示:

无论输入多少个按回车都是那样

mysql> create table tb_user(
    -> id int comment '编号',
    '> name varchar(50) comment `姓名`,
    '> age int comment `年龄`,
    '> gender varchar(1) comment `性别`,
    '> )
    '> comment `用户表`;
    '> ;
    '> ;
    '> ;
    '> ^C

原因分析1

可能此处以括号结尾,后面的注释不应该换行:

实际上通过查阅资料才发现

MySQL 对于 SQL 语句中的换行没有特别的要求,可以在任何需要的地方进行换行。

SQL 语句的可读性和美观性对于维护和调试都非常重要,因此建议适当地进行换行和缩进,以提高代码的可读性。

建议在以下情况下进行换行:

  • 在关键字前换行,以便更好地组织相关语句。
  • 在 FROM、JOIN、WHERE、GROUP BY、HAVING、ORDER BY 等关键字后面换行。
  • 在 SELECT、INSERT、UPDATE、DELETE 等语句中的列或值列表过长时,可以将每个列或值单独放在一行中,以提高可读性。

下面是一个使用换行和缩进的示例:

SELECT
    tb_user.*, tb_order.order_no, tb_order.create_time
FROM
    tb_user
JOIN
    tb_order
ON
    tb_user.id = tb_order.user_id
WHERE
    tb_user.age >= 18
GROUP BY
    tb_user.id
HAVING
    COUNT(tb_order.id) >= 10
ORDER BY
    tb_user.create_time DESC;

问题描述2

在当初不知道情的情况下,我把换行的问题解决了,后来还是发现没有成功创建

这个语句一旦写错就得Ctrl + C重新来,目前没有找到重新编辑上一行语句的方法。

mysql> create table tb_user(
    -> id int comment '编号`,
    '> name varchar(50) comment `姓名`,
    '> age int comment `年龄`,
    '> gender varchar(1) comment `性别`,
    '> ) comment `用户表`;
    '> ^C

原因分析2

可能是中英文的问题,以及符号运用的问题

这是大多数初学者容易忽略的地方,通常中英文切换后很难记得这回事

还有就是字符串只能用单引号或者双引号,这里用反引号习惯了就出问题了

最后一行字段没有逗号!

解决方案

  • 把所有中文符号改过来
  • 把所有的字符串用的反引号换成单引号
  • 最后一行的逗号去掉

改完之后的代码:

mysql> create table tb_user(
    -> id int comment '编号',
    -> name varchar(50) comment '姓名',
    -> age int comment '年龄',
    -> gender varchar(1) comment '性别'
    -> ) comment '用户表';
Query OK, 0 rows affected (0.02 sec)

此时终于创建成功了!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于explain性能详细分析

    基于explain性能详细分析

    这篇文章主要介绍了基于explain性能详细分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • CentOS 7中源码安装MySQL 5.7.6+详细教程

    CentOS 7中源码安装MySQL 5.7.6+详细教程

    最近在CentOS 7中源码安装MySQL 5.7.6+,发现MySQL5.7.6+以后的安装方式真的与以前版本的MySQL安装方式大大的不同呀。不自己安装一把,你都不知道不同之处在哪,下面这篇文章是通过自己的安装过程总结的一篇安装教程,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • MySQL删除外键、增加外键以及删除主键、增加主键的实战步骤

    MySQL删除外键、增加外键以及删除主键、增加主键的实战步骤

    在Mysql中使用外键,可以有效地将多个表格的数据"联动"起来,打破独立状态,互相影响,下面这篇文章主要给大家介绍了关于MySQL删除外键、增加外键以及删除主键、增加主键的相关资料,需要的朋友可以参考下
    2022-08-08
  • MySQL内存使用的查看方式详解

    MySQL内存使用的查看方式详解

    MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分),下面这篇文章主要给大家介绍了关于MySQL内存使用的查看方式,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2019-01-01
  • MySQL Error 1449错误的解决方法

    MySQL Error 1449错误的解决方法

    MySQL Error 1449 错误信息为 “The user specified as a definer ('user'@'host') does not exist”,意思是定义者在当前系统中不存在,从而导致无法正常使用这些对象,本文针对该错误介绍了详细解决方法,需要的朋友可以参考下
    2025-02-02
  • MySQL中group_concat函数深入理解

    MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,需要的朋友可以适当参考下
    2012-11-11
  • mysql免安装版配置教程

    mysql免安装版配置教程

    这篇文章主要为大家详细介绍了mysql免安装版配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL分组查询获取每组最新的一条数据详解(group by)

    MySQL分组查询获取每组最新的一条数据详解(group by)

    在写报表功能时遇到一个需要根据用户id分组查询最新一条钱包明细数据的需求,下面这篇文章主要给大家介绍了关于MySQL分组查询获取每组最新的一条数据的相关资料,需要的朋友可以参考下
    2024-08-08
  • Mysql删除重复的数据 Mysql数据去重复

    Mysql删除重复的数据 Mysql数据去重复

    这篇文章主要介绍了Mysql删除重复的数据 Mysql数据去重复,需要的朋友可以参考下
    2016-08-08
  • MySQL主备操作以及原理详解

    MySQL主备操作以及原理详解

    本文主要介绍了MySQL主备操作以及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论