2017-06-27 46 views
-2

私は現在、相互作用なしで実行する必要のあるコンソールアプリケーションを作成しています。このアプリケーションでは、最後に更新されたデータを確認するためにMySQLサーバーに接続しています。これは私のワークステーションで、ネットワークドライブからでも問題なく実行されます。C#サーバー上でMySQLを実行するとMySQLが例外をスローする

私はそれを私たちのサーバーに置き、私のためにそれを実行させると、突然MySQLを実行できません。それはconnection.Open()で失敗します。

私は現在使用しています: -MySQLコネクタバージョン6.8.8 -.NET枠組みここで4.5.2

は、それがスローエラーです。

System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception. ---> System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.MySqlConfiguration' threw an exception. ---> System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) 
    at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl) 
    at System.Security.Policy.PEFileEvidenceFactory.GenerateLocationEvidence() 
    at System.Security.Policy.PEFileEvidenceFactory.GenerateEvidence(Type evidenceType) 
    at System.Security.Policy.AssemblyEvidenceFactory.GenerateEvidence(Type evidenceType) 
    at System.Security.Policy.Evidence.GenerateHostEvidence(Type type, Boolean hostCanGenerate) 
    at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type) 
    at System.Security.Policy.Evidence.GetHostEvidence(Type type, Boolean markDelayEvaluatedEvidenceUsed) 
    at System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence(Type evidenceType) 
    at System.Security.Policy.Evidence.GenerateHostEvidence(Type type, Boolean hostCanGenerate) 
    at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type) 
    at System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext() 
    at System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext() 
    at System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName) 
    at System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath) 
    at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig) 
    at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig) 
    at System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord record) 
    at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) 
    at System.Configuration.BaseConfigurationRecord.GetSection(String configKey) 
    at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName) 
    at System.Configuration.ConfigurationManager.GetSection(String sectionName) 
    at MySql.Data.MySqlClient.MySqlConfiguration..cctor() 
    --- End of inner exception stack trace --- 
    at MySql.Data.MySqlClient.MySqlConfiguration.get_Settings() 
    at MySql.Data.MySqlClient.Replication.ReplicationManager..cctor() 
    --- End of inner exception stack trace --- 
    at MySql.Data.MySqlClient.Replication.ReplicationManager.IsReplicationGroup(String groupName) 
    at MySql.Data.MySqlClient.MySqlConnection.Open() 
    at WarningTextSolution.MyDB.OpenConnection() 

し、関連するコード:

MySqlConnection con; 
public MyDB() 
    { 
     logger = actionlogger; 
     logger.Log("------ [ STARTING MySQL ] -----"); 
     logger.Log("Attempting to create MySQL database connection"); 
     try 
     { 
      string connectionString = "server=SERVERIP;uid=USERID;pwd=PASSWORD;database=DATABASE;"; 
      con = new MySqlConnection(); 
      con.ConnectionString = connectionString; 
      logger.Log("Connection accepted"); 
     } 
     catch(Exception e) 
     { 
      logger.Log("MySQL exception: " + e); 
      Console.WriteLine("Error occured, please read the log."); 
     } 
     logger.Log("------ [ MySQL STARTED ] -----"); 
    } 

    /// <summary> 
    /// Opens a connection to ecommerce Database 
    /// </summary> 
    /// <returns>True if successful else false</returns> 
    private bool OpenConnection() 
    { 
     try 
     { 
      logger.Log("Attempting to open connection to server"); 
      con.Open(); 
      logger.Log("Connection successfully opened"); 
      return true; 
     } 
     catch (Exception e) 
     { 
      logger.Log("Attempt failed"); 
      logger.Log("MySQL connection error: " + e); 
      Console.WriteLine("MySQL error: " + e); 
      return false; 
     } 
    } 

私はこれをグーグルで試したと私は、この問題への答えを見つけることができます。

ネイティブコードのデバッグを有効にしてSQL Serverのデバッグを有効にしようとしましたが、いずれも役立たず、

これ以上の情報が必要な場合は、お気軽にお問い合わせください。

+0

だから、replicatormanagerはあなたのコードと何をしていますか?あなたはそれで何をしていますか? – BugFinder

+0

何も直接。 MySqlConnectionクラスのOpen()メソッドを呼び出すたびに呼び出されます。 – aSnejbjerg

+0

マシン/ユーザーがデータベースにアクセスすることは許可されていますか?私はケースではない場合、mysqlがTypeInitializationExceptionをスローすることができると思います。 –

答えて

0

私のサーバーに関しては適切な通知を受けていないようです(またはこの詳細を忘れてしまいました)。私たちのプロダクションサーバーにログインしているユーザーは、自分のユーザーアカウントと同じ権限を持っていません。受け取った。

+0

何が欠けていたのですか? – Cerveser

+0

不足しているアクセス許可は単純な読み取り/書き込みでした。 – aSnejbjerg

関連する問題