菲洛嘉青春动能素135HA FILLMED® NCTF 135HA LED指示灯的常见故障分析 智微智能 Elkhartlake K075终端,零售产业新选择 天空蓝拓客管理系统详细介绍版 muso公链项目 天使计划 是什么?[秘] 独家揭秘最前沿的家装“黑科技”——掌赋 天博体育欧洲杯特辑,东道主法兰西的失意2016 亚马逊的送货侦察员 学习听起来像挡泥板 Google Comics Factory使ML变得容易 笑着说-男性或女性 Amazon Rekognition中更好的人脸检测 关于Spaun的真相-大脑模拟 两个聊天机器人彼此聊天-有趣又怪异 GANPaint:将AI用于艺术 WCF和WF给予社区 从耳朵到脸 所有神经网络的深层缺陷 蠕虫在尾巴上平衡杆子 Kickstarter上的OpenCV AI套件 TensorFlow-Google的开源AI和计算引擎 众包取代新闻工作者 Google的DeepMind学会玩街机游戏 哑机器人V智能机器人 .NET与.NET 5融为一体 Google的深度学习-语音识别 LInQer将.NET LINQ移植到Javascript 机器人TED演讲-新的图灵测试? GAN的发明者加入苹果 您的智能手机会监视您键入的内容 人工智能帮助改善国际象棋 Zalando Flair NLP库已更新 TensorFlow 1.5包含移动版本 AlphaGo输了一场比赛-比分3-1 虚拟机器学习峰会 Microsoft开源AI调试工具 SharePoint走向移动 F#4.0发出文化变革的信号 克里斯蒂拍卖AI艺术品 人工智能如何区分 Facebook在蒙特利尔的新AI实验室 Mozilla想要您的声音 微软使用极深的神经网络赢得ImageNet 建立AI合作伙伴关系 .NET Core 3-Microsoft几乎回到了起点 神经网络-更好的销售商? Google使用AI查找您的住所 虹膜-适用于Android的Siri证明苹果没有优势 TensorFlow 2提供更快的模型训练 深度学习研究人员将为Google工作
您的位置:首页 >前端 >

Mysql关键字和保留字(注意)

SQLGrammarException:

头部错误信息:2019-09-24 14:51:11.842INFO 6728 --- [nio-9002-exec-2] o.s.web.servlet.DispatcherServlet: FrameworkServlet "dispatcherServlet": initialization completed in 18 msHibernate: select recruit0_.id as id1_1_0_, recruit0_.address as address2_1_0_, recruit0_.condition as conditio3_1_0_, recruit0_.content1 as content4_1_0_, recruit0_.content2 as content5_1_0_, recruit0_.createtime as createti6_1_0_, recruit0_.education as educatio7_1_0_, recruit0_.eid as eid8_1_0_, recruit0_.jobname as jobname9_1_0_, recruit0_.label as label10_1_0_, recruit0_.salary as salary11_1_0_, recruit0_.state as state12_1_0_, recruit0_.type as type13_1_0_, recruit0_.url as url14_1_0_ from tb_recruit recruit0_ where recruit0_.id=?Hibernate: insert into tb_recruit (address, condition, content1, content2, createtime, education, eid, jobname, label, salary, state, type, url, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)2019-09-24 14:51:11.939WARN 6728 --- [nio-9002-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1064, SQLState: 420002019-09-24 14:51:11.939 ERROR 6728 --- [nio-9002-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : 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 "condition, content1, content2, createtime, education, eid, jobname, label, salar" at line 12019-09-24 14:51:11.939INFO 6728 --- [nio-9002-exec-2] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements2019-09-24 14:51:11.943 ERROR 6728 --- [nio-9002-exec-2] o.h.i.ExceptionMapperStandardImpl: HHH000346: Error during managed flush [org.hibernate.exception.SQLGrammarException: could not execute statement]org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statementat org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:242)

。。。。。。。中间的省略

at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68)at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:536)... 72 moreCaused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 "condition, content1, content2, createtime, education, eid, jobname, label, salar" at line 1at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 "condition, content1,

condition mysql5.7的保留字,因数据库某表中一字段用的condition,结果在用spring-boot-jpa的时候新增记录,一直失败。

又如: Desc,mysql保留的关键字,在创建字段时给自己提个醒!!!

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 "Desc, TestWebUrl, UpdateTime, WebUrl) values (null, "ajaxurl", "baby-techcenter-" at line 1

关键字VS保留字

SQL和编程语言一样,是有关键字的。但是我们所理解的关键字在SQL中分为两类:

关键字

这类字在Mysql中具有特殊含义,例如常见的alter、static、cache。虽然具有特殊含义,但是还是可以作为Mysql中的标识符来使用的。例如你创建一个表名为static的表并没有什么问题,但是在实际中不推荐这么做。

保留字

这类字在Mysql中就比较强势了。保留字,顾名思义,就是Mysql自身保留的标识符。一般情况下是不允许使用的,例如select、insert等。但是有两种例外的情况:

加反引号,即可当做正常的标识符使用
接在另一个合法的标识符后面,例如你创建一个mydb.insert表,就是没有问题的。
不过话说回来,谁会这么做呢?

Mysql命名建议

用英文,如果不知道怎么表述,就去google,千万不要用汉语拼音将就;
不要使用关键字、更不要使用保留字;
尽量使用统一的前缀。

参考:https://dev.mysql.com/doc/refman/5.7/en/keywords.html
参考:https://blog.csdn.net/hfut_wowo/article/details/81011952

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。