數據庫語法報錯:ERROR 1064 (42000):for the right syntax to use near 'XXXX'

生活中總會遇到大大小小的挫折,讓人措手不及,哭笑不得。
比如我最近遇到的一個小問題:

我想對id=1 的用戶修改一下權限:

update user set right=5 where id=1;

但是。。
MySQL一直語法報錯:
ERROR 1064 (42000): 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 'right permission typedefinition' at line 1
我的語句絕對沒有問題
這讓我不爽了好久

讓我更不爽的是,原來錯誤如此弱智:
right是mysql中的關鍵字!
能犯這種錯誤的我還能怎麼辦?
於是我要把right改爲permissio:

alter table user change right permission typedefinition;

但是。。

ERROR 1064 (42000): 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 'right permission typedefinition' at line 1

心態炸了好麼?
改都改不了
我怎麼弱智到取了個right作爲變量名!
當時我也想取名叫permission的,但是因爲right好寫一些,於是。。
寫這篇文章沒什麼意思,寫代碼要
規範細節,引以爲戒。
不要在最弱智的地方犯下最傻B的錯誤

附帶mysql的保留字:(來源http://www.cnblogs.com/lawdong/archive/2010/08/08/2357903.html


ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE  BEFORE
BETWEEN BIGINT  BINARY
BLOB    BOTH    BY
CALL    CASCADE CASE
CHANGE  CHAR    CHARACTER
CHECK   COLLATE COLUMN
CONDITION   CONNECTION  CONSTRAINT
CONTINUE    CONVERT CREATE
CROSS   CURRENT_DATE    CURRENT_TIME
CURRENT_TIMESTAMP   CURRENT_USER    CURSOR
DATABASE    DATABASES   DAY_HOUR
DAY_MICROSECOND DAY_MINUTE  DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC    DESCRIBE    DETERMINISTIC
DISTINCT    DISTINCTROW DIV
DOUBLE  DROP    DUAL
EACH    ELSE    ELSEIF
ENCLOSED    ESCAPED EXISTS
EXIT    EXPLAIN FALSE
FETCH   FLOAT   FLOAT4
FLOAT8  FOR FORCE
FOREIGN FROM    FULLTEXT
GOTO    GRANT   GROUP
HAVING  HIGH_PRIORITY   HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE  IN  INDEX
INFILE  INNER   INOUT
INSENSITIVE INSERT  INT
INT1    INT2    INT3
INT4    INT8    INTEGER
INTERVAL    INTO    IS
ITERATE JOIN    KEY
KEYS    KILL    LABEL
LEADING LEAVE   LEFT
LIKE    LIMIT   LINEAR
LINES   LOAD    LOCALTIME
LOCALTIMESTAMP  LOCK    LONG
LONGBLOB    LONGTEXT    LOOP
LOW_PRIORITY    MATCH   MEDIUMBLOB
MEDIUMINT   MEDIUMTEXT  MIDDLEINT
MINUTE_MICROSECOND  MINUTE_SECOND   MOD
MODIFIES    NATURAL NOT
NO_WRITE_TO_BINLOG  NULL    NUMERIC
ON  OPTIMIZE    OPTION
OPTIONALLY  OR  ORDER
OUT OUTER   OUTFILE
PRECISION   PRIMARY PROCEDURE
PURGE   RAID0   RANGE
READ    READS   REAL
REFERENCES  REGEXP  RELEASE
RENAME  REPEAT  REPLACE
REQUIRE RESTRICT    RETURN
REVOKE  RIGHT   RLIKE
SCHEMA  SCHEMAS SECOND_MICROSECOND
SELECT  SENSITIVE   SEPARATOR
SET SHOW    SMALLINT
SPATIAL SPECIFIC    SQL
SQLEXCEPTION    SQLSTATE    SQLWARNING
SQL_BIG_RESULT  SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING    STRAIGHT_JOIN
TABLE   TERMINATED  THEN
TINYBLOB    TINYINT TINYTEXT
TO  TRAILING    TRIGGER
TRUE    UNDO    UNION
UNIQUE  UNLOCK  UNSIGNED
UPDATE  USAGE   USE
USING   UTC_DATE    UTC_TIME
UTC_TIMESTAMP   VALUES  VARBINARY
VARCHAR VARCHARACTER    VARYING
WHEN    WHERE   WHILE
WITH    WRITE   X509
XOR YEAR_MONTH  ZEROFILL
MySQL允許部分關鍵字用做未引起來的識別符,因爲許多人以前曾使用過它們。下面列出了一些例子:

ACTION

BIT

DATE

ENUM

NO

TEXT

TIME

TIMESTAMP
/**
*
* ━━━━━━神獸出沒━━━━━━
*     ┏┓     ┏┓
*   ┏┛┻━━━┛┻┓
*   ┃          ┃
*   ┃  ━      ┃
*   ┃ ┳┛ ┗┳  ┃
*   ┃         ┃
*   ┃  ┻     ┃
*   ┃         ┃ 
*   ┗━┓   ┏━┛ Code is far away from bug with the animal protecting
*     ┃   ┃    神獸保佑,代碼無bug
*     ┃   ┃
*     ┃   ┗━━━┓
*     ┃        ┣┓
*     ┃        ┏┛
*     ┗┓┓┏━┳┓┏┛
*      ┃┫┫  ┃┫┫
*      ┗┻┛  ┗┻┛
*
* ━━━━━━感覺萌萌噠━━━━━━
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章