diff --git a/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs b/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs index bb0da3d20..68b06d12d 100644 --- a/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs +++ b/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs @@ -270,7 +270,9 @@ namespace Orchard.Data.Migration.Interpreters { var builder = new StringBuilder(); - builder.AppendFormat("alter table {0} drop constraint {1}", _dialectLazy.Value.QuoteForTableName(PrefixTableName(command.SrcTable)), PrefixTableName(command.Name)); + builder.Append("alter table ") ++ .Append(_dialectLazy.Value.QuoteForTableName(PrefixTableName(command.SrcTable))) ++ .Append(_dialectLazy.Value.GetDropForeignKeyConstraintString(PrefixTableName(command.Name))); _sqlStatements.Add(builder.ToString()); RunPendingStatements(); diff --git a/src/Orchard/Data/Migration/Interpreters/MySqlCommandInterpreter.cs b/src/Orchard/Data/Migration/Interpreters/MySqlCommandInterpreter.cs index df3b1bd3a..33b9de478 100644 --- a/src/Orchard/Data/Migration/Interpreters/MySqlCommandInterpreter.cs +++ b/src/Orchard/Data/Migration/Interpreters/MySqlCommandInterpreter.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Data; using System.Text; using NHibernate.Dialect; @@ -34,6 +35,7 @@ namespace Orchard.Data.Migration.Interpreters { builder.AppendFormat("alter table {0} modify column {1} ", _dialectLazy.Value.QuoteForTableName(PrefixTableName(command.TableName)), _dialectLazy.Value.QuoteForColumnName(command.ColumnName)); + var initLength = builder.Length; // type if (command.DbType != DbType.Object) { @@ -46,13 +48,31 @@ namespace Orchard.Data.Migration.Interpreters { } // [default value] + var builder2 = new StringBuilder(); + + builder2.AppendFormat("alter table {0} alter column {1} ", + _dialectLazy.Value.QuoteForTableName(PrefixTableName(command.TableName)), + _dialectLazy.Value.QuoteForColumnName(command.ColumnName)); + var initLength2 = builder2.Length; + if (command.Default != null) { - builder.Append(" set default ").Append(DefaultDataMigrationInterpreter.ConvertToSqlValue(command.Default)).Append(" "); + builder2.Append(" set default ").Append(DefaultDataMigrationInterpreter.ConvertToSqlValue(command.Default)).Append(" "); } - return new [] { - builder.ToString() - }; + // result + var result = new List(); + + if (builder.Length > initLength) + { + result.Add(builder.ToString()); + } + + if (builder2.Length > initLength2) + { + result.Add(builder2.ToString()); + } + + return result.ToArray(); } private string PrefixTableName(string tableName) {