博主近段时间在做一个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一样,原因当然是他们本质上都是数据库的关键字了,这里,由于时间关系博主就不一一举例了!