From 41e9fda2dec8c3b672e5d26bccdc683553ae5549 Mon Sep 17 00:00:00 2001 From: Murray Hou Date: Tue, 21 Jul 2015 15:38:21 +0800 Subject: [PATCH] Fixed [default value] For Mysql The [default value] can'nt use [modify column] in mysql. --- .../Interpreters/MySqlCommandInterpreter.cs | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) 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) {