mysql 报错ERROR 1064 (42000),原因使用了mysql保留字

执行select语句:

select * from cfg_parameter where key='nSJtifqVSI7HkPrKHlxhD6';
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 'key='nSJtifqVSI7HkPrKHlxhD6'' at line 1

乍一看,好像这条语句并没有什么问题。但是执行之后mysql确实报错了,所以肯定是有问题的。

排查:select * from cfg_parameter where 没有问题,key也没问题,='nSJtifqVSI7HkPrKHlxhD6';也没有问题。

            等等,再仔细看看,发现key是mysql的保留字,当使用了mysql保留字,需要用反引号将其引起来,也就是键盘数字1旁边的键(` `)

解决方法:

1、若使用了mysql的保留字,需要将其用反引号引起来。

mysql> select * from cfg_parameter where `key`='nSJtifqVSI7HkPrKHlxhD6';
+------+------------------------+----------------------+-----------+-----------------------------------------------------------+------------+
| id   | key                    | cfg_name             | option_id | parameter_content                                                  | is_deleted |
+------+------------------------+----------------------+-----------+-----------------------------------------------------------+------------+
|    5 | nSJtifqVSI7HkPrKHlxhD6 | ACTIONID_LIST_TO_RCP |      NULL | {"ACTION_IDS":"0~90001"}     |          0 |
+------+------------------------+----------------------+-----------+-----------------------------------------------------------+------------+


2、建议不要在创建表的过程中使用mysql保留字,避免后期造成麻烦。

mysql保留字:

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

--------------------- 
作者:wukong_666 
来源:优快云 
原文:https://blog.youkuaiyun.com/wukong_666/article/details/70208749 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值