内存数据库 h2 与 mysql 兼容性太差了,能把 PostgreSQL 整成单测环境启动吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git00ll
V2EX    数据库

内存数据库 h2 与 mysql 兼容性太差了,能把 PostgreSQL 整成单测环境启动吗

  •  
  •   git00ll 15 小时 26 分钟前 1014 次点击

    java 单元测试,求教。 或者有其他更好的适用于 java 单测的数据库推荐吗

    第 1 条附言    2 小时 22 分钟前
    说错了各位佬,是想说 MariaDB 。

    我写单测确实遇到 h2 的兼容性问题很烦。
    比如说 ddl 不兼容,导致建表语句要做修改才能在 h2 中运行。
    一些语句中的函数不支持,比如 date_add 之类的。
    h2 的驱动和 mysql 驱动表现不一致,导致 sharding jdbc 中报错。
    12 条回复    2025-10-24 12:06:16 +08:00
    SethShi
        1
    SethShi  
       15 小时 11 分钟前
    1. 使用 SQLite 内存驱动
    2. 启动一个 MySQL dev container 来测试
    3. PostgreSQL 可以
    shiny
        2
    shiny  
       15 小时 4 分钟前 via iPhone
    了解下 pglite
    iseki
        3
    iseki  
       5 小时 15 分钟前 via Android
    可以放弃在单测中测试数据库……这真的没有必要。至于 H2 ,H2 虽然说自己兼容 PostgreSQL 但实测还是有很多问题,读了下代码,发现架构不一样,不太好修。
    liyafe1997
        4
    liyafe1997  
       4 小时 55 分钟前
    我的单元测试环境是 docker-compose 直接在 tmpfs 中启动一个 PostgreSQL 实例,效果挺好的
    liyafe1997
        5
    liyafe1997  
       4 小时 53 分钟前
    供你参考:
    services:
    test-db:
    image: postgres:15
    container_name: test-db-postgres
    environment:
    - POSTGRES_USER=admin
    - POSTGRES_PASSWORD=password
    - POSTGRES_DB=postgres
    tmpfs:
    - /var/lib/postgresql/data
    networks:
    - test-network
    carrotliang
        6
    carrotliang  
       4 小时 45 分钟前
    从不单元测试
    powersee
        7
    powersee  
       4 小时 32 分钟前 via iPhone
    关键词:java Testcontainer junit
    dddd1919
        8
    dddd1919  
       4 小时 26 分钟前
    没看懂你的问题,是单测用 H2 替换 mysql 兼容性差,想要用 PG 做单测?那 PG 和 mysql 兼容性也很差啊,自用 H2 在单测替代 mysql 倒没遇到问题
    dragondove
        9
    dragondove  
       4 小时 20 分钟前
    你真要的话有 Embedded Postgres ,可以当作测试依赖使用。不过我建议对于数据库直接 mock 使用
    Vaspike
        10
    Vaspike  
       4 小时 14 分钟前
    pg 和 mysql 的语法也是有差别的, pg 的 group by 是很严格的
    kur0d3s
        11
    kur0d3s  
       2 小时 4 分钟前
    Ketteiron
        12
    Ketteiron  
       1 小时 14 分钟前
    对 orm 单测是应该的,数据库单测是做什么,不应该在集成测试里做吗。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3762 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 05:20 PVG 13:20 LAX 22:20 JFK 01:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86