背景
前不久做项目时,使用Navicat导入数据后把第一列设置成了列名,然后发现源数据没有列名。导致下图的情形:
列名全部由数字组成。虽然可以使用Navicat可以很方便的修改列名,但本人还是想试验一下使用SQL语言修改,但产生了我没有预料到的错误。
ALTER TABLE userbehavior CHANGE 1 User_id VARCHAR(255),
CHANGE 2268318 Item_id VARCHAR(255),
CHANGE 2520377 Category_id VARCHAR(255),
CHANGE 1511544070 Btime VARCHAR(255);
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------
结论
最后查阅资料发现,MySQL中如果列名全是数字的话,要想引用这个列名需要使用``(ESC键下面的那个)将该列名括起来。将上述代码修改成如下即可成功:
ALTER TABLE userbehavior CHANGE `1` User_id VARCHAR(255),
CHANGE `2268318` Item_id VARCHAR(255),
CHANGE `2520377` Category_id VARCHAR(255),
CHANGE `1511544070` Btime VARCHAR(255);