1. 程式人生 > >MySQL中的表名和資料庫關鍵字相同解決辦法

MySQL中的表名和資料庫關鍵字相同解決辦法

博主近段時間在做一個javaweb的小專案,需要資料庫,但是今晚在建立一個表名為’order’的時候,‘很莫名其妙’地在報錯,樓主以為是太久沒使用命令列來建立,仔細檢查自己的語句,找了半天也找不出個所以然。後來突然,想到mysql有個’order by’排序功能。博主在想是不是和java等程式語言一樣,使用者自定義的不能和關鍵字一樣呢?於是博主開始測試,果不其然!下面分享解決辦法!

首先樓主想要建立一個表:

Create table order(
id smallint unsigned primary key auto_increment,
cinameID smallint,
hallID smallint
, mivieID smallint, prices int, seat int);

‘莫名其妙’的報錯了:這裡寫圖片描述

意識到不是莫名奇妙的錯誤之後,樓主改了一個表名:

Create table rder(
id smallint unsigned primary key auto_increment,
cinameID smallint,
hallID smallint,
mivieID smallint,
prices int,
seat int);

結果馬上成功了:這裡寫圖片描述

這就說明是我的錯因在表名了嘛!

解決辦法之一:
當然是換一個表名了(非關鍵字);

解決辦法二:
問:那我要是非要用那個表名,是不是沒轍了?
答:答案肯定是否定的啊,

這樣修改一下就好了

Create table `order`(
id smallint unsigned primary key auto_increment,
cinameID smallint,
hallID smallint,
mivieID smallint,
prices int,
seat int);

這裡寫圖片描述

最為重要的一點來了:你有沒有注意這次我的表名嵌在了一對類似單引號的符號了,但是事實上那不是單引號,而是英文輸入法下的“Tag”按鍵正上方的那顆按鍵
如圖:
這裡寫圖片描述

這樣建立的表,要是要對其操作也要做相同的“,否則就會報錯了!!!!

事實說話:
假設我要檢視我的表的域

正常情況下應該是這樣的:

show columns from order;

這裡寫圖片描述

看報錯了吧!!!

應該這樣

show columns from `order`;

這裡寫圖片描述

所以

最好表名什麼的,最好不要用關鍵字,以免帶來不必要的麻煩!!!!

備註:博主測試了一下其他關鍵字,和order一樣,原因當然是他們本質上都是資料庫的關鍵字了,這裡,由於時間關係博主就不一一舉例了!