2017-03-07 52 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

顯示引擎將InnoDB顯示爲引擎。我在創建轉儲文件後從mysql工作臺導入並通過ftp傳輸。遠程服務器使用phpMyAdmin。我無法訪問託管域上的服務器根目錄。我如何添加這些文件。請幫忙。 – whisps11

+0

如果生產服務器操作系統是Unix系列,並且您已使用'mysqldump'導入表,請確保在EF上聲明的所有標識符在生產服務器上遵循區分大小寫規則。有關詳細信息,請參閱https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html。 –

回答

0

更新

我從變化的Guid主鍵爲int,我不知道它是如何工作,但。 這是我之前的模型

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; }  
} 

而我只是將PK更改爲int類型。

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

相關問題