diff --git a/src/Orchard/Data/Migration/AutomaticDataMigrations.cs b/src/Orchard/Data/Migration/AutomaticDataMigrations.cs index fb5a3456c..2c936313a 100644 --- a/src/Orchard/Data/Migration/AutomaticDataMigrations.cs +++ b/src/Orchard/Data/Migration/AutomaticDataMigrations.cs @@ -80,12 +80,25 @@ namespace Orchard.Data.Migration { /// /// This ensures that the framework migrations have run for the distributed locking feature, as existing Orchard installations will not have the required tables when upgrading. /// - private void EnsureDistributedLockSchemaExists() { + private void EnsureDistributedLockSchemaExists() + { // Ensure the distributed lock record schema exists. var schemaBuilder = new SchemaBuilder(_dataMigrationInterpreter); var distributedLockSchemaBuilder = new DistributedLockSchemaBuilder(_shellSettings, schemaBuilder); - if (distributedLockSchemaBuilder.EnsureSchema()) + if (!distributedLockSchemaBuilder.SchemaExists()) + { + + // Workaround to avoid some Transaction issue for PostgreSQL. + if (_shellSettings.DataProvider.Equals("PostgreSql", StringComparison.OrdinalIgnoreCase)) + { + _transactionManager.RequireNew(); + distributedLockSchemaBuilder.CreateSchema(); + return; + } + + distributedLockSchemaBuilder.CreateSchema(); _transactionManager.RequireNew(); + } } } }