mysql表结构的index_Mysql表结构中使用index的坑

我们知道在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));

217791f8eecad67bd8c2dd40f992a520.png

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值