I am currently trying to trim down my versioned scripts into one baseline script (we don’t pay for flyway so is a pain). So I deleted my schema and attempted to run my one big script that contains everything I had. I exported the DDL out of my DBeaver client. However when starting my applications I am getting this error:
SQL State : 42P01 Error Code : 0 Message : ERROR: relation schema-name.my_table_name does not exist Position: 13 Location : db/migration/aaa/R__01_my_script_name.sql Line : 3 Statement : DELETE FROM "schema-name.my_table_name" WHERE field_name = 'blah' OR field_name = 'blah2'
I beleive this error is because the repeatable script is running before the versioning, where as the versioning script is what creates all of the tables. It is my understanding that flyway runs the repeatable scripts last. Is there some sort of property I am missing or something? Here is my directory structure:
db --> migration --> my client -->R__01_repeatable.sql -->V__01_baseline.sql
Please let me know if you need anymore information from my here is my flyway properties
flyway: locations: classpath:/db/migration/shared,classpath:/db/migration/${app.client} baseline-on-migrate: true base_line_version: 1 placeholders: schema-name: ${spring.jpa.properties.hibernate.default_schema} schemas: ${spring.jpa.properties.hibernate.default_schema} enabled: true
Advertisement
Answer
Looking at your scripts, your V
script is named incorrectly
The naming convention is documented here
In particular, the double underscore needs to appear after the version number in the V
script, so the correct name would be V01__baseline.sql
Repeatable migrations run after Versioned migrations, so this should fix the problem once the Versioned migration is properly detected