diff --git a/integration-tests/__tests__/deploy-database.spec.js b/integration-tests/__tests__/deploy-database.spec.js index bcea791a9..61fc3aa6d 100644 --- a/integration-tests/__tests__/deploy-database.spec.js +++ b/integration-tests/__tests__/deploy-database.spec.js @@ -638,6 +638,10 @@ describe('Deploy database', () => { testWrapper(async (conn, driver, engine) => { await testDatabaseDeploy(engine, conn, driver, [ [ + { + name: 't1.uninstall.sql', + text: 'drop table t1', + }, { name: 't1.install.sql', text: 'create table t1 (id int primary key); insert into t1 (id) values (1)', diff --git a/packages/datalib/src/ScriptDrivedDeployer.ts b/packages/datalib/src/ScriptDrivedDeployer.ts index 9c258f4bc..3e4a160cc 100644 --- a/packages/datalib/src/ScriptDrivedDeployer.ts +++ b/packages/datalib/src/ScriptDrivedDeployer.ts @@ -161,7 +161,8 @@ export class ScriptDrivedDeployer { case 'install': if (isEqual) return; const uninstallFile = this.uninstall.find(x => x.name == file.name.replace('.install.sql', '.uninstall.sql')); - if (uninstallFile) { + if (uninstallFile && journalItem) { + // file was previously installed, uninstall first await this.runFileCore( uninstallFile, 'uninstall',