首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
阿里云
yqmac
V2EX  ›  Java

偷懒导致的 mysql 类型转换的问题

  •  
  •   yqmac · 86 天前 · 2228 次点击
    这是一个创建于 86 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:接手了别人的代码,id 用的 varchar 但是内容是拼接出来的时间戳,都是长整型。

    蓝后,写个 select 语句,偷懒,一直懒得加单引号 突然发现一个 select 出来了 6 条,卧槽,大问题,id 生成策略会重复。 面对重型生产问题,一步步查,怎么都觉得不会重复,一看,卧槽,这六条 id 不一致啊。 …… 当当当当~ select 661843814642404550000000 = '661843814642404556823288' 得到 1 突然惊醒 mysql 数据转换有问题,一查文档,果然,丢精度。所以,偷懒没好处……各位引以为戒。

    16 条回复    2020-01-05 13:25:02 +08:00
    tedderchan
        1
    tedderchan   86 天前
    第一次听说有人 id 用 varchar, 我我也是醉了
    KasuganoSoras
        2
    KasuganoSoras   86 天前
    第一次听说有人 id 用 varchar
    walpurgis
        3
    walpurgis   86 天前 via Android
    看见弱类型语言出现大数字要警惕,上次碰到前端 js 接收的 JSON 里有个 20 位数字,末尾都是 0,同样的问题
    CStarter
        4
    CStarter   86 天前 via Android
    @tedderchan id 用 uuid,就是 varchar 啊
    sx90
        5
    sx90   86 天前
    id,不是表格内部自增号吗🤣
    opengps
        6
    opengps   86 天前
    id 用 varchar 不是问题,uuid 就用 varchar 存储。不正常的是类型不严格
    luozic
        7
    luozic   86 天前 via iPhone
    丢精度这是 feature ?;类型系统这个东西有一本非常厚的书,一般用的语言类型系统都是半生不熟,sql 这东西设计里面就没有非常严格的类型系统玩。
    msg7086
        8
    msg7086   86 天前
    @Tranvin @opengps
    UUID 严格来说应该是 BINARY(16),就算用文本存储也不是 VARCHAR 而是 CHAR(36)或者 CHAR(32)。
    guanhui07
        9
    guanhui07   86 天前
    第一次听说有人 id 用 varchar
    opengps
        10
    opengps   86 天前 via Android
    我要是在本帖回一句,我最自豪的数据库设计是无主键,是不是会被鄙视😃😄😁😀
    ZredoC
        11
    ZredoC   86 天前
    图怎么莫得了
    ytll21
        12
    ytll21   86 天前
    @opengps 把你的故事说出来 :P
    opengps
        13
    opengps   86 天前   ❤️ 1
    @ytll21 之前分享过连接,主要核心就一个:匹配业务。
    用于传感器采集类业务的巨型表设计(关系型数据库版): https://www.opengps.cn/Blog/View.aspx?id=284&from=v2ex
    lskjdfgl
        14
    lskjdfgl   86 天前
    抓紧看了下我的数据库设计,现在改也不知道来不来的及😂
    qq1054000800
        15
    qq1054000800   85 天前
    innode 引擎,用 uuid 做主键是非常糟糕的设计
    yqmac
        16
    yqmac   84 天前
    说实话,系统我是个接盘侠,主键 uuid 或者这种长整型的 varchar 也是恨不能理解的……但是这个玩意已经无法更改了啊,前人挖坑后人……,难道自增不香么。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2972 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:38 · PVG 16:38 · LAX 01:38 · JFK 04:38
    ♥ Do have faith in what you're doing.