解决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)

此时终于创建成功了!

总结

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

相关文章

  • MySQL DQL从入门到精通

    MySQL DQL从入门到精通

    通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQL DQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小编一起看看吧
    2025-06-06
  • 把MySQL卸载干净的超详细步骤

    把MySQL卸载干净的超详细步骤

    这篇文章主要介绍了把MySQL卸载干净的超详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友们下面跟着小编来一起学习吧
    2024-02-02
  • mysql的事务,隔离级别和锁用法实例分析

    mysql的事务,隔离级别和锁用法实例分析

    这篇文章主要介绍了mysql的事务,隔离级别和锁用法,结合实例形式分析了MySQL事务,隔离级别和锁相关原理、用法及操作注意事项,需要的朋友可以参考下
    2020-02-02
  • 使用Navicat生成MySQL测试数据全过程

    使用Navicat生成MySQL测试数据全过程

    本文介绍了如何使用Navicat生成MySQL测试数据,并将其用于测试PostgreSQL数据库的分区表性能,通过Navicat的数据生成工具,可以方便地设置生成数据的条数、格式和类型,并生成多张表的测试数据
    2025-11-11
  • ubuntu下设置mysql自动备份的例子

    ubuntu下设置mysql自动备份的例子

    ubuntu下设置mysql自动备份的例子,供大家学习参考
    2013-01-01
  • mysql分页时offset过大的Sql优化经验分享

    mysql分页时offset过大的Sql优化经验分享

    mysql分页是我们在开发经常遇到的一个功能,最近在实现该功能的时候遇到一个问题,所以这篇文章主要给大家介绍了关于mysql分页时offset过大的Sql优化经验,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
    2017-08-08
  • mysql_mcp_server部署及应用实践案例

    mysql_mcp_server部署及应用实践案例

    文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例,展示了如何在Dify中安装和使用MCP服务,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • MySQL高效分页解决方案集分享

    MySQL高效分页解决方案集分享

    这篇文章介绍了MySQL高效分页解决方案集,有需要的朋友可以参考一下
    2013-11-11
  • mysql中优化和修复数据库工具mysqlcheck详细介绍

    mysql中优化和修复数据库工具mysqlcheck详细介绍

    这篇文章主要介绍了mysql中优化和修复数据库工具mysqlcheck详细介绍,需要的朋友可以参考下
    2014-05-05
  • mysql中关于between和in的区别

    mysql中关于between和in的区别

    这篇文章主要介绍了mysql中关于between和in的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论