You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio····这句话对于咱们并不陌生,无非就是多了“,”之类的问题。但是你如果无意之中添加了一个mysql中的保
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio····这句话对于咱们并不陌生,无非就是多了“,”之类的问题。但是你如果无意之中添加了一个mysql中的保留字段作为数据库中存贮的字段名,悲剧就这样发生了。
前几天因为功能的临时变更,需要给数据表添加一个字段用来区别导入的批次,我就在mysql中添加了group字段,没想到我的噩梦就此展开·····
本来程序已经接近收尾,本想着今早来公司给程序来个欢乐的结尾,没想到····每次导入excel表总是提示我sql语句错误,我变在sql语句上添添减减,也没有把错误搞定,整整一个上午外加下午两个小时,简直已经到了抓狂的程度。简直要跪地苦思冥想,但是还是没有搞定这个错误。
把问题放在一边,继续搞其他的东西····当在写一个group by 语句时,突然意识到,group 是mysql的一个保留字,就此问题迎刃而解。切记切记,多么痛的领悟啊
mysql的保留字段
在MySQL中,下表中的字显式被保留。其中大多数字进制被标准SQL用作列名和/或表名(例如,GROUP)。少数被保留了,因为MySQL需要它们,在MySQL中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号()括起来,当让我们一般都尽量少使用这些保留的字段。
| 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 |