解決Mysql建表時(shí)報(bào)錯(cuò)invalid?ON?UPDATE?clause?for?'create_date'?column
Mysql建表時(shí)報(bào)錯(cuò)invalid ON UPDATE clause for 'create_date' column
這個(gè)錯(cuò)誤是由于mysql 版本問題導(dǎo)致的
`create_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', `update_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
這是建表語句。MySQL 5.5 每個(gè)表只允許一個(gè)列的默認(rèn)值根據(jù)時(shí)間戳生成時(shí)間
可以查看一下mysql的版本號(hào):
show variables like 'innodb_version';
MySQL創(chuàng)建表易錯(cuò)
場(chǎng)景
提示:DDL - 表操作 - 創(chuàng)建:
通過 MySQL 中的SQL語句創(chuàng)建表遇到的各種報(bào)錯(cuò)
問題描述1
一開始是以為輸入分號(hào)就可以成功創(chuàng)建,結(jié)果如下所示:
無論輸入多少個(gè)按回車都是那樣
mysql> create table tb_user(
-> id int comment '編號(hào)',
'> name varchar(50) comment `姓名`,
'> age int comment `年齡`,
'> gender varchar(1) comment `性別`,
'> )
'> comment `用戶表`;
'> ;
'> ;
'> ;
'> ^C
原因分析1
可能此處以括號(hào)結(jié)尾,后面的注釋不應(yīng)該換行:
實(shí)際上通過查閱資料才發(fā)現(xiàn)
MySQL 對(duì)于 SQL 語句中的換行沒有特別的要求,可以在任何需要的地方進(jìn)行換行。
SQL 語句的可讀性和美觀性對(duì)于維護(hù)和調(diào)試都非常重要,因此建議適當(dāng)?shù)剡M(jìn)行換行和縮進(jìn),以提高代碼的可讀性。
建議在以下情況下進(jìn)行換行:
- 在關(guān)鍵字前換行,以便更好地組織相關(guān)語句。
- 在 FROM、JOIN、WHERE、GROUP BY、HAVING、ORDER BY 等關(guān)鍵字后面換行。
- 在 SELECT、INSERT、UPDATE、DELETE 等語句中的列或值列表過長時(shí),可以將每個(gè)列或值單獨(dú)放在一行中,以提高可讀性。
下面是一個(gè)使用換行和縮進(jìn)的示例:
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
在當(dāng)初不知道情的情況下,我把換行的問題解決了,后來還是發(fā)現(xiàn)沒有成功創(chuàng)建
這個(gè)語句一旦寫錯(cuò)就得Ctrl + C重新來,目前沒有找到重新編輯上一行語句的方法。
mysql> create table tb_user(
-> id int comment '編號(hào)`,
'> name varchar(50) comment `姓名`,
'> age int comment `年齡`,
'> gender varchar(1) comment `性別`,
'> ) comment `用戶表`;
'> ^C
原因分析2
可能是中英文的問題,以及符號(hào)運(yùn)用的問題
這是大多數(shù)初學(xué)者容易忽略的地方,通常中英文切換后很難記得這回事
還有就是字符串只能用單引號(hào)或者雙引號(hào),這里用反引號(hào)習(xí)慣了就出問題了
最后一行字段沒有逗號(hào)!
解決方案
- 把所有中文符號(hào)改過來
- 把所有的字符串用的反引號(hào)換成單引號(hào)
- 最后一行的逗號(hào)去掉
改完之后的代碼:
mysql> create table tb_user(
-> id int comment '編號(hào)',
-> name varchar(50) comment '姓名',
-> age int comment '年齡',
-> gender varchar(1) comment '性別'
-> ) comment '用戶表';
Query OK, 0 rows affected (0.02 sec)
此時(shí)終于創(chuàng)建成功了!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql的事務(wù),隔離級(jí)別和鎖用法實(shí)例分析
這篇文章主要介紹了mysql的事務(wù),隔離級(jí)別和鎖用法,結(jié)合實(shí)例形式分析了MySQL事務(wù),隔離級(jí)別和鎖相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
使用Navicat生成MySQL測(cè)試數(shù)據(jù)全過程
本文介紹了如何使用Navicat生成MySQL測(cè)試數(shù)據(jù),并將其用于測(cè)試PostgreSQL數(shù)據(jù)庫的分區(qū)表性能,通過Navicat的數(shù)據(jù)生成工具,可以方便地設(shè)置生成數(shù)據(jù)的條數(shù)、格式和類型,并生成多張表的測(cè)試數(shù)據(jù)2025-11-11
ubuntu下設(shè)置mysql自動(dòng)備份的例子
ubuntu下設(shè)置mysql自動(dòng)備份的例子,供大家學(xué)習(xí)參考2013-01-01
mysql分頁時(shí)offset過大的Sql優(yōu)化經(jīng)驗(yàn)分享
mysql分頁是我們?cè)陂_發(fā)經(jīng)常遇到的一個(gè)功能,最近在實(shí)現(xiàn)該功能的時(shí)候遇到一個(gè)問題,所以這篇文章主要給大家介紹了關(guān)于mysql分頁時(shí)offset過大的Sql優(yōu)化經(jīng)驗(yàn),文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起看看吧。2017-08-08
mysql_mcp_server部署及應(yīng)用實(shí)踐案例
文章介紹了在CentOS7.5環(huán)境下部署MySQL_mcp_server的步驟,包括服務(wù)安裝、配置和啟動(dòng),還提供了一個(gè)基于Dify工作流的應(yīng)用案例,展示了如何在Dify中安裝和使用MCP服務(wù),感興趣的朋友跟隨小編一起看看吧2025-12-12
mysql中優(yōu)化和修復(fù)數(shù)據(jù)庫工具mysqlcheck詳細(xì)介紹
這篇文章主要介紹了mysql中優(yōu)化和修復(fù)數(shù)據(jù)庫工具mysqlcheck詳細(xì)介紹,需要的朋友可以參考下2014-05-05
mysql中關(guān)于between和in的區(qū)別
這篇文章主要介紹了mysql中關(guān)于between和in的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

