解決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)文章
CentOS 7中源碼安裝MySQL 5.7.6+詳細(xì)教程
最近在CentOS 7中源碼安裝MySQL 5.7.6+,發(fā)現(xiàn)MySQL5.7.6+以后的安裝方式真的與以前版本的MySQL安裝方式大大的不同呀。不自己安裝一把,你都不知道不同之處在哪,下面這篇文章是通過自己的安裝過程總結(jié)的一篇安裝教程,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12MySQL刪除外鍵、增加外鍵以及刪除主鍵、增加主鍵的實(shí)戰(zhàn)步驟
在Mysql中使用外鍵,可以有效地將多個(gè)表格的數(shù)據(jù)"聯(lián)動(dòng)"起來,打破獨(dú)立狀態(tài),互相影響,下面這篇文章主要給大家介紹了關(guān)于MySQL刪除外鍵、增加外鍵以及刪除主鍵、增加主鍵的相關(guān)資料,需要的朋友可以參考下2022-08-08MySQL中g(shù)roup_concat函數(shù)深入理解
本文通過實(shí)例介紹了MySQL中的group_concat函數(shù)的使用方法,需要的朋友可以適當(dāng)參考下2012-11-11MySQL分組查詢獲取每組最新的一條數(shù)據(jù)詳解(group?by)
在寫報(bào)表功能時(shí)遇到一個(gè)需要根據(jù)用戶id分組查詢最新一條錢包明細(xì)數(shù)據(jù)的需求,下面這篇文章主要給大家介紹了關(guān)于MySQL分組查詢獲取每組最新的一條數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2024-08-08Mysql刪除重復(fù)的數(shù)據(jù) Mysql數(shù)據(jù)去重復(fù)
這篇文章主要介紹了Mysql刪除重復(fù)的數(shù)據(jù) Mysql數(shù)據(jù)去重復(fù),需要的朋友可以參考下2016-08-08