diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs b/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs index b151f84c08..c18a5f8477 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs @@ -28,6 +28,8 @@ namespace Umbraco.Core.Persistence.SqlSyntax GuidColumnDefinition = "char(36)"; DefaultValueFormat = "DEFAULT {0}"; + + InitColumnTypeMap(); } public override IEnumerable GetTablesInSchema(Database db) diff --git a/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs b/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs index 7b16e77171..67c29581a4 100644 --- a/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs +++ b/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs @@ -1,17 +1,20 @@ using System; - +using System.Linq; using Moq; using NUnit.Framework; using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.DatabaseModelDefinitions; +using Umbraco.Core.Persistence.Migrations; using Umbraco.Core.Persistence.SqlSyntax; +using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Persistence.SyntaxProvider { - [NUnit.Framework.Ignore("This doesn't actually test anything")] + //[NUnit.Framework.Ignore("This doesn't actually test anything")] [TestFixture] - public class MySqlSyntaxProviderTests + public class MySqlSyntaxProviderTests : BaseUsingSqlCeSyntax { [SetUp] public void SetUp() @@ -20,6 +23,7 @@ namespace Umbraco.Tests.Persistence.SyntaxProvider } [Test] + [NUnit.Framework.Ignore] public void Can_Generate_Create_Table_Statement() { var type = typeof(TagRelationshipDto); @@ -48,5 +52,40 @@ namespace Umbraco.Tests.Persistence.SyntaxProvider { SqlSyntaxContext.SqlSyntaxProvider = null; } + + [Test] + public void U4_8017() + { + var logger = Mock.Of(); + var migration = new TestMigration(SqlSyntaxContext.SqlSyntaxProvider, logger); + var context = new MigrationContext(DatabaseProviders.MySql, null, logger); + migration.Context = context; + migration.Up(); + var x = context.Expressions; + Assert.AreEqual(1, x.Count); + var e = x.First().ToString(); + + // SQLCE provider *does* use UniqueIdentifier + // MySql using GUID...? because InitColumnTypeMap() missing in provider, fixed + + Assert.AreEqual("ALTER TABLE `cmsPropertyTypeGroup` ADD COLUMN `uniqueID` char(36) NOT NULL", e); + } + + [Migration("1.0.0", 0, "Test")] + private class TestMigration : MigrationBase + { + public TestMigration(ISqlSyntaxProvider sqlSyntax, ILogger logger) : base(sqlSyntax, logger) + {} + + public override void Up() + { + Create.Column("uniqueID").OnTable("cmsPropertyTypeGroup").AsGuid().NotNullable().WithDefault(SystemMethods.NewGuid); + } + + public override void Down() + { + throw new NotImplementedException(); + } + } } } \ No newline at end of file