tidb 的 clustered index 在进行 select 的 Unknown column 'xxx' in 'field list'

2023-03-01 16:38:02 +08:00
 wtfedc

第一次用 tidb ,请教个问题,网页版通过 csv 倒入,其中有一列是 int 的material_id,并不是连续的,导入的选项勾选了 primary key ,数据导入倒是没问题,
使用select * from mytable limit 1这种没问题,

但是使用select material_id from mytable limit 1
会报错 Unknown column 'material_id' in 'field list'

更有意思的是,如果使用网页版,输入material_id过程中,如果用 tab 进行补全,前边自动加了个红点,类似于select ·material_id from mytable limit 1反而正常了。网页版不用补全的话,还是报错。用``包上material_id也不行。 删掉表,重新倒入,不再勾选 primary key ,还是有同样的问题。

同一个 csv 倒入到 mysql 倒是没有类似的问题。

那个小红点,粘不出来,实在搞不懂是个什么,有没有同志遇到过类似的问题

438 次点击
所在节点    问与答
2 条回复
wtfedc
2023-03-01 17:26:01 +08:00
那个小红点单独粘不出来,但是连着前边的空格,可以粘出来,检测出来 unicode 是 65279 ,然后通过
```golang
SQL := fmt.Sprintf("SELECT %cmaterial_id FROM mytable LIMIT 1", 65279)
```终于在业务代码里实现正常查询了,我是真的不懂,为什么有个这样的坑
wtfedc
2023-03-01 17:34:51 +08:00
突然懂了,65279 对应十六进制 FEFF ,也就是 Unicode Byte Order Mark (BOM)。
csv 文件为了解决 excel 打开的中文乱码问题,手动设置过 BOM ,在导入到 tidb 的时候,U+FEFFmaterial_id 被当成了一个整体

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/920192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX