Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration Problem [DNET801] #738

Closed
firebird-automations opened this issue Jan 17, 2018 · 1 comment
Closed

Migration Problem [DNET801] #738

firebird-automations opened this issue Jan 17, 2018 · 1 comment

Comments

@firebird-automations
Copy link

Submitted by: Andreas Patock (apatock)

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

@cincuranet
Copy link
Member

EF6 provider here is in maintenance/legacy mode here (see https://groups.google.com/g/firebird-net-provider/c/_0Hwoh5XG_I). If somebody feels like tackling this with good PR, it will be reopened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants