Resetting autoincrement in h2

前端 未结 3 716
无人及你
无人及你 2021-01-04 20:38

I\'m testing a controller that returns a json response but the tests fail after the first time because the h2 database does not reset the auto increment id. Using fixtures o

相关标签:
3条回答
  • 2021-01-04 20:55

    If you are using Spring, I found this blog post which suggests using @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

    So that each test uses a new application context, thereby resetting the db increments.

    0 讨论(0)
  • 2021-01-04 21:03

    Execute an SQL-script on your table:

    TRUNCATE TABLE my_table RESTART IDENTITY;
    ALTER SEQUENCE my_table_id_seq RESTART WITH 1;
    

    H2 should be of version 1.4.200 or higher.

    See https://www.h2database.com/html/commands.html

    0 讨论(0)
  • 2021-01-04 21:15

    Start your play app, fire up browser with this url (if you run play app locally):

    http://localhost:9000/@db
    

    Enter your h2 db, and type the command below and run:

    ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1
    

    If you'd like to do this programmatically, Fixtures.executeSQL() might be useful

    For more information, check http://www.h2database.com/html/grammar.html#alter_table_alter

    0 讨论(0)
提交回复
热议问题