目录
当使用了某些字段后,接口报错,将报错信息翻译过来后,表面上是在说通信链路异常,其实不然
下面是报错信息示例 ---
接口测试工具报错:
### Error querying database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet successfully received from the server was 53,755 milliseconds ago. The last packet sent successfully to the server was 53,764 milliseconds ago.\r\n### The error may exist in file [C:\\zhiZong\\yayk-service\\ruoyi-admin\\target\\classes\\mapper\\gzap\\GzapGzrwPlanMapper.xml]\r\n### The error may involve com.ruoyi.web.controller.business.mapper.GzapGzrwPlanMapper.selectGzapGzrwPlanList-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT count(0) FROM 表名 WHERE user_id = ?\r\n### Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet successfully received from the server was 53,755 milliseconds ago. The last packet sent successfully to the server was 53,764 milliseconds ago.\n; Communications link failure\n\nThe last packet successfully received from the server was 53,755 milliseconds ago. The last packet sent successfully to the server was 53,764 milliseconds ago.; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet successfully received from the server was 53,755 milliseconds ago. The last packet sent successfully to the server was 53,764 milliseconds ago.",
"code": 500
}
idea控制台报错:
这时候,可以去排查一下各个字段是不是数据库的关键字或保留字
排查方法
可以直接把SQL中可疑的字段用` `标记起来或直接给查询语句全查。
比如我这里select * 就正常,但一个一个把字段列出来再查就报错了
分析出现这种情况,肯定是字段有问题,非特殊情况建议不要用数据库的关键字或保留字
另外如果不想换字段,还可以加个复数形式嘛,比如describe就改成describes,就可以避免了
如果非要一字不差的使用关键字、保留字,那么可以使用` `来标记,也就是感叹号左边的那个键
其他常见数据库的关键字或保留字详见保留字表
附上mysql保留字列表:
Reserved Words in
MySQL 5.6.23
ACCESSIBLE
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
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
GET
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
IO_AFTER_GTIDS
IO_BEFORE_GTIDS
IS
ITERATE
JOIN
KEY
KEYS
KILL
LEADING
LEAVE
LEFT
LIKE
LIMIT
LINEAR
LINES
LOAD
LOCALTIME
LOCALTIMESTAMP
LOCK
LONG
LONGBLOB
LONGTEXT
LOOP
LOW_PRIORITY
MASTER_BIND
MASTER_SSL_VERIFY_SERVER_CERT
MATCH
MAXVALUE
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
PARTITION
PRECISION
PRIMARY
PROCEDURE
PURGE
RANGE
READ
READS
READ_WRITE
REAL
REFERENCES
REGEXP
RELEASE
RENAME
REPEAT
REPLACE
REQUIRE
RESIGNAL
RESTRICT
RETURN
REVOKE
RIGHT
RLIKE
SCHEMA
SCHEMAS
SECOND_MICROSECOND
SELECT
SENSITIVE
SEPARATOR
SET
SHOW
SIGNAL
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
XOR
YEAR_MONTH
ZEROFILL
NewReserved Words in MySQL 5.6
GET
IO_AFTER_GTIDS
IO_BEFORE_GTIDS
MASTER_BIND
ONE_SHOT
PARTITION
SQL_AFTER_GTIDS