Issue Details (XML | Word | Printable)

Key: DNET-801
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Jiri Cincura
Reporter: Andreas Patock
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
.NET Data provider

Migration Problem

Created: 17/Jan/18 12:30 PM   Updated: 17/Jan/18 12:30 PM
Component/s: ADO.NET Provider
Affects Version/s: 5.9.1.0
Fix Version/s: None

Environment: Firebird 2.5


 Description  « Hide
Hi Jiri,
you wanted to post me this to the issue tracker - here it is.


I have a problem add a new column via migration to a codefirst database.

This is the code for the migration:

    public partial class StreamingModuleAddAddress2 : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.StreamingModule", "Address1", c => c.String(nullable: false, maxLength: 23));
            AddColumn("dbo.StreamingModule", "Address2", c => c.String(nullable: false, maxLength: 23));
            AddColumn("dbo.StreamingModule", "Port1", c => c.Int(nullable: false));
            AddColumn("dbo.StreamingModule", "Port2", c => c.Int(nullable: false));
            DropColumn("dbo.StreamingModule", "Address");
            DropColumn("dbo.StreamingModule", "Port");
        }
        
        public override void Down()
        {
            AddColumn("dbo.StreamingModule", "Port", c => c.Int(nullable: false));
            AddColumn("dbo.StreamingModule", "Address", c => c.String(nullable: false, maxLength: 23));
            DropColumn("dbo.StreamingModule", "Port2");
            DropColumn("dbo.StreamingModule", "Port1");
            DropColumn("dbo.StreamingModule", "Address2");
            DropColumn("dbo.StreamingModule", "Address1");
        }
    }

But when running entityframework creates the following sql:

ALTER TABLE "StreamingModule" ADD "Address1" VARCHAR(23) DEFAULT CAST(_UTF8'' AS VARCHAR(0)) NOT NULL

I think firebird doesn't allow the CAST in a DEFAULT statement!

And this causes the following exception:

FirebirdSql.Data.FirebirdClient.FbException was unhandled
  ErrorCode=335544569
  HResult=-2147467259
  Message=Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 66
CAST
  SQLSTATE=42000
  Source=FirebirdSql.Data.FirebirdClient
  StackTrace:
       bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery()
       bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand t, DbCommandInterceptionContext`1 c)
       bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
       bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
       bei System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable`1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable`1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection)
       bei System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass30.<ExecuteStatements>b__2e()
       bei System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute(Action operation)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements, DbTransaction existingTransaction)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
       bei System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, Boolean downgrading, Boolean auto)
       bei System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
       bei System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
       bei System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
       bei System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
       bei System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
       bei System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
       bei System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context)
       bei System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf`1.<CreateInitializationAction>b__e()
       bei System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
       bei System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
       bei System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
       bei System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
       bei System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
       bei System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
       bei System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
       bei System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
       bei System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()
       bei System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
       bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       bei ConsoleTester.Program.Main(String[] args) in C:\WorkDir_Trunk\Win\Bfe\KscSilknet\Database\ConsoleTester\Program.cs:Zeile 22.
       bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException:
       ErrorCode=335544569
       HResult=-2146233088
       IsWarning=false
       Message=Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 66
CAST
       SQLSTATE=42000
       Source=FirebirdSql.Data.FirebirdClient
       StackTrace:
            bei FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ProcessResponse(IResponse response)
            bei FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadResponse()
            bei FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadGenericResponse()
            bei FirebirdSql.Data.Client.Managed.Version11.GdsStatement.Prepare(String commandText)
            bei FirebirdSql.Data.FirebirdClient.FbCommand.Prepare(Boolean returnsSet)
            bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior behavior, Boolean returnsSet)
            bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery()
       InnerException:

Do you have any Idea how to fix that?

Kind regards,
Andreas



 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
There are no comments yet on this issue.