我们知道在mysql的数据库建表时,有很多字段是不能够使用的,比如key和index等。这篇文章就以index为例来进行说明。

接收一个项目,其中一个字段的关键字为index,执行查询方法时出现如下异常信息:

Caused by: java.sql.SQLSyntaxErrorException: 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 'index,value,status,create_time,update_time  FROM config 
 
 WHERE grou' at line 1

起初看这个异常有些摸不着头脑,将SQL复制到客户端程序中,执行依旧出现问题:

SELECT  id,group_id,index,value,status,create_time,update_time  FROM config     WHERE group_id = 1 AND status = '1' ORDER BY id DESC

于是就开始删减字段进行验证排查,发现是index与关键字冲突导致的。

针对这种情况,如果可以进来将表结构的字段进行修改,修改为非mysql的关键字。如果项目不允许修改,则可以用如下格式来表示字段:

'key'
或
'index'

针对上面的语句修改一下就是:

SELECT  id,group_id,'index',value,status,create_time,update_time  FROM config     WHERE group_id = 1 AND status = '1' ORDER BY id DESC

而且凡是使用到该字段的地方都需要使用单引号,否则就会出现上面所展示的异常信息。

index在mysql中的含义

index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;
  因此,索引只是索引,它不会去约束索引的字段的行为(那是key要做的事情)。如,create table t(id int,index inx_tx_id (id));



Mysql表结构中使用index的坑插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2020/04/15/mysql-index/