mysql奇怪的问题——字段多了个空格,查询报错:无该字段
mysql版本:8.0
本地及QA的数据库:navicate可视化工具。
线上:阿里云数据库。
问题:
<?php
messageSQLSTATE[42S22]: Column not found: 1054 Unknown column 'transport_info.delivery_id ' in 'field list'
?>
错误的sql:
<?php
SELECT
`A`.`B_id `
FROM
`A`
WHERE
`A`.`A_id` = '11'
AND `A`.`B_id` = '22'
LIMIT 1
?>
正确的sql:
<?php
SELECT
`A`.`B_id`
FROM
`A`
WHERE
`A`.`A_id` = '11'
AND `A`.`B_id` = '22'
LIMIT 1
?>
现象描述:
上面错误的sql语句,我在navicate中查询时,均能查询出数据,代码块中也能打印出数据。
但在线上,阿里云数据库中查询时,报错,提示该字段不存在!
后来排查发现,是写代码的时候给这个字段后面加了个空格,导致数据查询报错了!
搜了一下,但没有找到原因,也没发现是什么配置影响导致的,只是找到了这个现象。
如果有知道啥配置引起的,希望能指点一下,不知道的,也可以看看,了解一下这个粗心导致的bug。只要因为测试和线上查询结果不一致,导致判断这个问题还是花了一些时间的。
高认可度评论:
Navicat Premium 12.0.24
做了个类似测试,如下(users
.id
字段存在,故意多加了个空格): 也是会出现类似的报错提示的: 这可能和你的工具版本有关。可以看 navicate 的日志,看最后执行的sql是什么
Navicat Premium 12.0.24
做了个类似测试,如下(users
.id
字段存在,故意多加了个空格): 也是会出现类似的报错提示的: 这可能和你的工具版本有关。`` 反斜杠意思是保持原字段,匹配等级比较高
这种问题排查起来真的要命