V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wtfedc
V2EX  ›  问与答

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

  •  
  •   wtfedc · 2023-03-01 16:38:02 +08:00 · 573 次点击
    这是一个创建于 661 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次用 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 倒是没有类似的问题。

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

    wtfedc
        1
    wtfedc  
    OP
       2023-03-01 17:26:01 +08:00
    那个小红点单独粘不出来,但是连着前边的空格,可以粘出来,检测出来 unicode 是 65279 ,然后通过
    ```golang
    SQL := fmt.Sprintf("SELECT %cmaterial_id FROM mytable LIMIT 1", 65279)
    ```终于在业务代码里实现正常查询了,我是真的不懂,为什么有个这样的坑
    wtfedc
        2
    wtfedc  
    OP
       2023-03-01 17:34:51 +08:00
    突然懂了,65279 对应十六进制 FEFF ,也就是 Unicode Byte Order Mark (BOM)。
    csv 文件为了解决 excel 打开的中文乱码问题,手动设置过 BOM ,在导入到 tidb 的时候,U+FEFFmaterial_id 被当成了一个整体
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2225 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.