2017-03-07 10 views
1

この質問は何度か尋ねられましたが、私はすべての解決策を検討しています。私が直面している問題は、リモートサーバー上に現れています。ローカルサーバー上でMVC5、EntityFramework6、およびMySQL 5.7を使用していますが、ローカルサーバー上で例外またはエラーなしで実行されます。しかし、私のソリューションをリモートサーバーにロードすると、問題が表示されます。これは例外リモートサーバーで例外が発生しました: 'db_a185f5_ems.tmpidentity_employee'テーブルが存在しません

Table 'db_a185f5_ems.tmpidentity_employee' doesn't exist 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: MySql.Data.MySqlClient.MySqlException: Table 'db_a185f5_ems.tmpidentity_employee' doesn't exist 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace:  

[MySqlException (0x80004005): Table 'db_a185f5_ems.tmpidentity_employee' doesn't exist] 
    MySql.Data.MySqlClient.MySqlStream.ReadPacket() +306 
    MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) +67 
    MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) +17 
    MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) +110 
    MySql.Data.MySqlClient.MySqlDataReader.NextResult() +772 
    MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +1512 
    MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +33 
    System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +12 
    System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext`1 c) +9 
    System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +72 
    System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext) +355 
    System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior) +167 
    System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +12 
    System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues) +234 
    System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update() +139 

[UpdateException: An error occurred while updating the entries. See the inner exception for details.] 
    System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update() +319 
    System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator ut) +9 
    System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update(T noChangesResult, Func`2 updateFunction) +120 
    System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update() +77 
    System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__35() +11 
    System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) +288 
    System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction) +163 
    System.Data.Entity.Core.Objects.<>c__DisplayClass2a.<SaveChangesInternal>b__27() +22 
    System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute(Func`1 operation) +9 
    System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction) +222 
    System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options) +7 
    System.Data.Entity.Internal.InternalContext.SaveChanges() +114 

[DbUpdateException: An error occurred while updating the entries. See the inner exception for details.] 
    System.Data.Entity.Internal.InternalContext.SaveChanges() +199 
    System.Data.Entity.Internal.LazyInternalContext.SaveChanges() +27 
    System.Data.Entity.DbContext.SaveChanges() +20 
    EMS.Controllers.<CreateEmployee>d__54.MoveNext() in c:\Users\Hira\Documents\Visual Studio 2013\Projects\EMS\EMS\Controllers\AdministratorController.cs:401 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 
    System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97 
    System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +17 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 
    System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 
    System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36 
    System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9744261 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

であり、このエラーはライン「ctxt.SaveChanges」で、このコードで発生します。

public ActionResult CreateEmployee(CreateEmployeeViewModel model) 
     {    
      if (ModelState.IsValid) 
      { 
       Employee emp = new Employee 
       { 
        FirstName = model.FirstName, 
        LastName = model.LastName, 
        Email =model.Email, 
        JoiningDate = model.JoiningDate,      
        Username = model.Username, 
        Password = model.Password 

       }; 
       ctxt.Employees.Add(emp); 
       ctxt.SaveChanges(); 

      } 
       return View(model); 
     } 

私は、リモートサーバー上の私のテーブルをチェックしました。彼らはすべてInnodbです。私はこれで何も作成していないので、 "tmpidentity"を持つテーブルはありません。私は最初にコードを使用しました。リモートサーバーはphpMyAdminを使用しています。

これは私のDbContextです:

public class EMSDbContext : DbContext 
{ 

    public static EMSDbContext Create() 
    { 
     return new EMSDbContext(); 
    } 
    public DbSet<Administrator> Administrators { get; set; } 
    public DbSet<Employee> Employees { get; set; } 
    public DbSet<Client> Clients { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();   
     modelBuilder.Conventions.Remove<ForeignKeyIndexConvention>(); 
    } 
} 
+0

ラン 'SHOW ENGINES'コマンドは、最初InnoDBが存在していることを確認することがあります。必要なテーブルをインポートする方法(リモートサーバーに直接コピーするか、SQLクエリファイルを使用してインポートする) 'ib_logfile *'と 'ibdata'(MySQLのルートデータディレクトリのすべての' ib * ')ファイルもコピーしてみてください。 –

+0

Show EngineはエンジンとしてInnoDBを表示します。ダンプファイルを作成してftp経由でmysql workbenchからインポートしました。リモートサーバーはphpMyAdminを使用しています。私はホスティングドメイン上のサーバーのルートディレクトリにアクセスできない。どのようにこれらのファイルを追加しますか?助けてください。 – whisps11

+0

プロダクションサーバOSがUnixファミリで、mysqldumpを使用してテーブルをインポートした場合、EF上で宣言されたすべての識別子が本番サーバ上の大文字と小文字を区別していることを確認してください。詳細はhttps://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.htmlを参照してください。 –

答えて

0

更新

私はintにのGuidからの主キーを変更している、と私はどのように知りませんが、それは働きました。 これは

public class Employee 
{  
    [Key] 
    [Required] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid EmployeeId { get; set; } 

    public string FirstName { get; set; }  
    public string LastName { get; set; } 
    public string Email { get; set; } 
    public DateTime JoiningDate { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; }  
} 

前に私のモデルだったと私はちょうどタイプをintにPKを変更しました。

public class Employee 
{  
    [Key] 
    [Required]  
    public int EmployeeId { get; set; } 

    public string FirstName { get; set; }  
    public string LastName { get; set; } 
    public string Email { get; set; } 
    public DateTime JoiningDate { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; }  
} 

誰でもこれを説明できますか。これから、コード全体にpkの種類を変更する必要があるようです。 Guid型はリモートサーバーで何かをしなければならないのですか?

PS:リモートサーバー上のWindowsベースのプラットフォームを使用しています。

1

私はこのリプレイがあなたに遅すぎることを知っています。それは他人のためのものです。 私は今日同じ問題を抱えています。私もこのエラーについては何も考えていませんでした。その後、私は自動生成されたguidがトリガーでmysqlに保持されていることを理解しました。 MySqlコネクタによって生成されるトリガ。見逃した。私は別のテーブルから引き金を引く貼り付けをコピーします。私の問題は修正されました。

詳細https://musthaan.com/2017/06/13/getting-error-on-add-new-table-conjero-tmpidentity_project_consultant_order-doesnt-exist-on-mysql-codefirst-with-ef/

+0

ありがとうございました。これが他の人に役立つことを願っています(y) – whisps11

関連する問題