2014-05-07 37 views
3

我在winform應用程序的工作與MySQL數據庫,所以當我跑MySQL工作臺數據庫腳本顯示這條消息GZip標題中的幻數不正確。請確保您傳遞一個gzip流

enter image description here

我點擊「OK'and顯示腳本

enter image description here

運行後的腳本並創建數據庫,當我跑我的winform應用程序在第一次查詢的數據庫顯示此異常:

var permissions_in_db = db.Permissions 
          .Where(a => a.Name == s) 
          .Count(); 

System.IO.InvalidDataException不受控制:「GZip標頭中的幻數不正確。請確保您傳遞一個gzip流。」

這裏的跟蹤

System.IO.InvalidDataException not be controlled 
  HResult = -2146233087 
  Message = The magic number in GZip header is not correct. Make sure you are passing a GZip stream. 
  Source = System 
  StackTrace : 
       in System.IO.Compression.GZipDecoder.ReadHeader (InputBuffer input) 
       in System.IO.Compression.Inflater.Decode () 
       in System.IO.Compression.Inflater.Inflate (Byte [ ] bytes , Int32 offset , Int32 length) 
       in System.IO.Compression.DeflateStream.Read (Byte [ ] array , Int32 offset , Int32 count) 
       in System.IO.Compression.GZipStream.Read (Byte [ ] array , Int32 offset , Int32 count) 
       in System.Xml.XmlTextReaderImpl.InitStreamInput (baseUri Uri , String baseUriStr , Stream stream , Byte [ ] bytes , Int32 byteCount , Encoding encoding) 
       in System.Xml.XmlTextReaderImpl.FinishInitStream () 
       in System.Xml.XmlReaderSettings.CreateReader (Stream input , baseUri Uri , String baseUriString , XmlParserContext inputContext) 
       in System.Xml.XmlReader.Create (Stream input , XmlReaderSettings settings , String baseUri) 
       in System.Xml.Linq.XDocument.Load (Stream stream, LoadOptions options) 
       in System.Data.Entity.Migrations.Edm.ModelCompressor.Decompress (Byte [ ] bytes) 
       in System.Data.Entity.Migrations.History.HistoryRepository.GetLastModel (String & migrationId) 
       in System.Data.Entity.Migrations.History.HistoryRepository.GetLastModel () 
       in System.Data.Entity.Internal.InternalContext.QueryForModel () 
       in System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel (InternalContext internalContext , ModelHashCalculator modelHashCalculator , Boolean throwIfNoMetadata) 
       in System.Data.Entity.Internal.InternalContext.CompatibleWithModel (Boolean throwIfNoMetadata) 
       in System.Data.Entity.Database.CompatibleWithModel (Boolean throwIfNoMetadata) 
       in System.Data.Entity.DropCreateDatabaseIfModelChanges ` 1.InitializeDatabase (tcontext context) 
       in System.Data.Entity.Database . < > c__DisplayClass2 ` 1. <SetInitializerInternal> b__0 (DbContext c) 
       in System.Data.Entity.Internal.InternalContext . < > c__DisplayClass8 . <PerformDatabaseInitialization> b__6 () 
       in System.Data.Entity.Internal.InternalContext.PerformInitializationAction (Action action) 
       in System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () 
       in System.Data.Entity.Internal.LazyInternalContext . <InitializeDatabase> b__4 (InternalContext c) 
       in System.Data.Entity.Internal.RetryAction ` 1.PerformAction (TInput input) 
       in System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction (Action ` 1 action) 
       in System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () 
       in System.Data.Entity.Internal.InternalContext.Initialize () 
       in System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Type entityType) 
       in System.Data.Entity.Internal.Linq.InternalSet 1.Initialize ` () 
       in System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext ` () 
       in System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider ` () 
       in System.Linq.Queryable.Where [ TSource ] (IQueryable ` 1 source , Expression ` 1 predicate) 
       in RoleCreatorV5_net4.Login.button1_Click (Object sender, EventArgs e) in c: \ Users \ Rafa \ Downloads \ 1 \ final versions \ RoleCreatorV5_net4 \ Login.cs : line 30 
       in System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) 
       at System.Windows.Forms.Control.WmMouseUp (Message & m , MouseButtons button , Int32 clicks) 
       at System.Windows.Forms.Control.WndProc (Message & m) 
       in System.Windows.Forms.ButtonBase.WndProc (Message & m) 
       in System.Windows.Forms.Button.WndProc (Message & m) 
       in System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr hWnd , Int32 msg , IntPtr wparam , IntPtr lparam) 
       in System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW (MSG & msg) 
       in System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID , Int32 reason , Int32 pvLoopData) 
       in System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 reason , ApplicationContext context) 
       in System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 reason , ApplicationContext context) 
       in RoleCreatorV5_net4.Program.Main() in c: \ Users \ Rafa \ Downloads \ 1 \ final versions \ RoleCreatorV5_net4 \ Program.cs : line 70 
       in System.AppDomain._nExecuteAssembly (RuntimeAssembly assembly, String [ ] args) 
       in System.Runtime.Hosting.ApplicationActivator.CreateInstance (ActivationContext activationContext , String [ ] activationCustomData) 
       in Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone () 
       in System.Threading.ExecutionContext.RunInternal (ExecutionContext executionContext , ContextCallback callback , Object state , Boolean preserveSyncCtx) 
       at System.Threading.ExecutionContext.Run (ExecutionContext executionContext , ContextCallback callback , Object state , Boolean preserveSyncCtx) 
       at System.Threading.ExecutionContext.Run (ExecutionContext executionContext , ContextCallback callback , Object state) 
       in System.Threading.ThreadHelper.ThreadStart () 
  InnerException : 

下面是從Program.cs的

[STAThread] 
     static void Main() 
     { 

      Database.SetInitializer<MySqlContext>(new DropCreateDatabaseIfModelChanges<MySqlContext>()); 


      var connString = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString(); 

      using (var db = new MySqlContext()) 
      { 

       #region Load CheckedList1 

       const string f = "/Users/Rafa/Documents/Proyecto NS/SavedList.txt"; 
       List<string> lines = new List<string>(); 
       using (StreamReader r = new StreamReader(f)) 
       { 
        string line; 
        while ((line = r.ReadLine()) != null) 
        { 
         lines.Add(line); 
        } 
       } 

       foreach (string s in lines) 
       { 

        var permissions_in_db = db.Permissions 
         .Where(a => a.Name == s) 
         .Count(); 
        if (permissions_in_db < 1) 
        { 
         if (s!="") 
         { 
          db.Permissions.AddOrUpdate(new Permission 
          { 
           Name = s 
          }); 
          db.SaveChanges();  
         } 

        } 
       } 
       #endregion 

       db.SaveChanges(); 
      } 

      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Login()); 
     } 
    } 

我真的希望有人能幫助我的代碼!

+0

在嘗試運行腳本之前,您是否嘗試將sql文件的編碼更改爲兼容版本? – merp

+0

'const string f =「/Downloads/SavedList.txt」;'你的斜槓面向錯誤的方向 – merp

+0

另外...如果你確實切換了斜槓'\ Downloads \ SavedList.txt'甚至不是有效的路徑。 – merp

回答

1

是的,__migrationhistory模型列中有一些數據,拉丁編碼會混淆數據。爲了救援,運行腳本時不要打開文件。使用新的MySql Workbench,t這裏是一個「運行SQL腳本」按鈕,它允許您在不指定編碼的情況下運行。 enter image description here

相關問題