SQL对象命名使用保留字导致SQL Error: 1064, SQLState: 42000

Posted 鹤啸九天-西木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL对象命名使用保留字导致SQL Error: 1064, SQLState: 42000相关的知识,希望对你有一定的参考价值。

       如果在表或字段等数据库对象的命名中使用以下关键字和保留字(不区分大小写),就会报:SQL Error: 1064, SQLState: 42000。我遇到的现象是插入前2条记录都没报错,第3条及以后的插件都报这个错,所以可能跟mysql的版本有关系。为避免此类问题,尽量不使用这些关键字和保留字:

ADDALLALTER
ANALYZEANDAS
ASCASENSITIVEBEFORE
BETWEENBIGINTBINARY
BLOBBOTHBY
CALLCASCADECASE
CHANGECHARCHARACTER
CHECKCOLLATECOLUMN
CONDITIONCONNECTIONCONSTRAINT
CONTINUECONVERTCREATE
CROSSCURRENT_DATECURRENT_TIME
CURRENT_TIMESTAMPCURRENT_USERCURSOR
DATABASEDATABASESDAY_HOUR
DAY_MICROSECONDDAY_MINUTEDAY_SECOND
DECDECIMALDECLARE
DEFAULTDELAYEDDELETE
DESCDESCRIBEDETERMINISTIC
DISTINCTDISTINCTROWDIV
DOUBLEDROPDUAL
EACHELSEELSEIF
ENCLOSEDESCAPEDEXISTS
EXITEXPLAINFALSE
FETCHFLOATFLOAT4
FLOAT8FORFORCE
FOREIGNFROMFULLTEXT
GOTOGRANTGROUP
HAVINGHIGH_PRIORITYHOUR_MICROSECOND
HOUR_MINUTEHOUR_SECONDIF
IGNOREININDEX
INFILEINNERINOUT
INSENSITIVEINSERTINT
INT1INT2INT3
INT4INT8INTEGER
INTERVALINTOIS
ITERATEJOINKEY
KEYSKILLLABEL
LEADINGLEAVELEFT
LIKELIMITLINEAR
LINESLOADLOCALTIME
LOCALTIMESTAMPLOCKLONG
LONGBLOBLONGTEXTLOOP
LOW_PRIORITYMATCHMEDIUMBLOB
MEDIUMINTMEDIUMTEXTMIDDLEINT
MINUTE_MICROSECONDMINUTE_SECONDMOD
MODIFIESNATURALNOT
NO_WRITE_TO_BINLOGNULLNUMERIC
ONOPTIMIZEOPTION
OPTIONALLYORORDER
OUTOUTEROUTFILE
PRECISIONPRIMARYPROCEDURE
PURGERAID0RANGE
READREADSREAL
REFERENCESREGEXPRELEASE
RENAMEREPEATREPLACE
REQUIRERESTRICTRETURN
REVOKERIGHTRLIKE
SCHEMASCHEMASSECOND_MICROSECOND
SELECTSENSITIVESEPARATOR
SETSHOWSMALLINT
SPATIALSPECIFICSQL
SQLEXCEPTIONSQLSTATESQLWARNING
SQL_BIG_RESULTSQL_CALC_FOUND_ROWSSQL_SMALL_RESULT
SSLSTARTINGSTRAIGHT_JOIN
TABLETERMINATEDTHEN
TINYBLOBTINYINTTINYTEXT
TOTRAILINGTRIGGER
TRUEUNDOUNION
UNIQUEUNLOCKUNSIGNED
UPDATEUSAGEUSE
USINGUTC_DATEUTC_TIME
UTC_TIMESTAMPVALUESVARBINARY
VARCHARVARCHARACTEVARYING
WHENWHEREWHILE
WITHWRITEX509
XORYEAR_MONTHZEROFILL

如果必须要用这些关键字和保留字,语言不同(比如xml或Java等)方式不同,可以尝试以下方案:

       1、使用 ` `(反向引号,与单波浪线~在同一按钮)将命名包围,推荐使用此符号,相对比较通用;

       2、使用[ ](半角中括号)将命名包围;

       3、使用" "(半角双引号,如果放在字符串中需要用\\进行转译)将命名包围;

以上是关于SQL对象命名使用保留字导致SQL Error: 1064, SQLState: 42000的主要内容,如果未能解决你的问题,请参考以下文章

SQL对象命名使用保留字导致SQL Error: 1064, SQLState: 42000

SQL Server 架构命名约定

高分求SQL的全部保留字是哪些?

SQL server非分隔标识符的规则

在 MS SQL Server 中创建作为保留字/关键字的表名 [关闭]

SA工作-sql设计规范