您现在的位置: 主页 > 嵌入式操作系统 > Linux > MySQL不能写入数据之关键字冲突
本文所属标签:
为本文创立个标签吧:

MySQL不能写入数据之关键字冲突

来源:fromnet 网络用户发布,如有版权联系网管删除 2018-08-08 

问题描述:今天使用MySQL新建了一个表。在插入数据时,报了语法错误。由于使用的是 mabits 代码自动生成工具,并且自己没有改写其中的sql语句。所以确信,sql语句部分应该没有可能写错。因此马上意识到可能表里面的字段出了问题。于是查看表里面的字段,发现有一个desc 字段和MySQL中降序的关键字冲突了。然后顺手把这个字段改写成了describe。到这里,以为问题就应该解决了。谁料想,又冲突了。describe也是MySQL的关键字。于是上网搜了一下MySQL 关键字表。

如下是MySQL关键字表

MySQL 5.5 保留关键字

ACCESSIBLEADDALL

ALTERANALYZEAND

ASASCASENSITIVE

BEFOREBETWEENBIGINT

BINARYBLOBBOTH

BYCALLCASCADE

CASECHANGECHAR

CHARACTERCHECKCOLLATE

COLUMNCONDITIONCONSTRAINT

CONTINUECONVERTCREATE

CROSSCURRENT_DATECURRENT_TIME

CURRENT_TIMESTAMPCURRENT_USERCURSOR

DATABASEDATABASESDAY_HOUR

DAY_MICROSECONDDAY_MINUTEDAY_SECOND

DECDECIMALDECLARE

DEFAULTDELAYEDDELETE

DESCDESCRIBEDETERMINISTIC

DISTINCTDISTINCTROWDIV

DOUBLEDROPDUAL

EACHELSEELSEIF

ENCLOSEDESCAPEDEXISTS

EXITEXPLAINFALSE

FETCHFLOATFLOAT4

FLOAT8FORFORCE

FOREIGNFROMFULLTEXT

GRANTGROUPHAVING

HIGH_PRIORITYHOUR_MICROSECONDHOUR_MINUTE

HOUR_SECONDIFIGNORE

ININDEXINFILE

INNERINOUTINSENSITIVE

INSERTINTINT1

INT2INT3INT4

INT8INTEGERINTERVAL

INTOISITERATE

JOINKEYKEYS

KILLLEADINGLEAVE

LEFTLIKELIMIT

LINEARLINESLOAD

LOCALTIMELOCALTIMESTAMPLOCK

LONGLONGBLOBLONGTEXT

LOOPLOW_PRIORITYMASTER_SSL_VERIFY_SERVER_CERT

MATCHMAXVALUEMEDIUMBLOB

MEDIUMINTMEDIUMTEXTMIDDLEINT

MINUTE_MICROSECONDMINUTE_SECONDMOD

MODIFIESNATURALNOT

NO_WRITE_TO_BINLOGNULLNUMERIC

ONOPTIMIZEOPTION

OPTIONALLYORORDER

OUTOUTEROUTFILE

PRECISIONPRIMARYPROCEDURE

PURGERANGEREAD

READSREAD_WRITEREAL

REFERENCESREGEXPRELEASE

RENAMEREPEATREPLACE

REQUIRERESIGNALRESTRICT

RETURNREVOKERIGHT

RLIKESCHEMASCHEMAS

SECOND_MICROSECONDSELECTSENSITIVE

SEPARATORSETSHOW

SIGNALSMALLINTSPATIAL

SPECIFICSQLSQLEXCEPTION

SQLSTATESQLWARNINGSQL_BIG_RESULT

SQL_CALC_FOUND_ROWSSQL_SMALL_RESULTSSL

STARTINGSTRAIGHT_JOINTABLE

TERMINATEDTHENTINYBLOB

TINYINTTINYTEXTTO

TRAILINGTRIGGERTRUE

UNDOUNIONUNIQUE

UNLOCKUNSIGNEDUPDATE

USAGEUSEUSING

UTC_DATEUTC_TIMEUTC_TIMESTAMP

VALUESVARBINARYVARCHAR

VARCHARACTERVARYINGWHEN

WHEREWHILEWITH

WRITEXORYEAR_MONTH

ZEROFILL

MySQL 允许一些大家常用到的关键字使用英文 ` 号引起来使用,如:

ACTION

BIT

DATE

ENUM

NO

TEXT

TIME

TIMESTAMP

上述表中的关键字,在设计数据库时,应当尽量避免这些不必要的冲突。

问题解决:把关键字替换成了非关键字。

经验总结:通过程序操作数据库时,mysql会解析你代码里的sql语句,如果操作的字段中含有关键字,你写的sql语句就可能被错误解释了,sql语句也就出错了。数据库种类还是比较多的。多多少少都有点关键字,每个版本还略有不同。在设计数据库表的时候,应当设计的字段名特殊一点,尽量长一点,避免和关键字冲突。



              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > Linux > MySQL不能写入数据之关键字冲突
 关键字 字段 语句

"MySQL不能写入数据之关键字冲突"的相关文章

网站地图

围观()