Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MySQL在服务器上运行时引发异常_C#_Mysql - Fatal编程技术网

C#MySQL在服务器上运行时引发异常

C#MySQL在服务器上运行时引发异常,c#,mysql,C#,Mysql,我目前正在创建一个控制台应用程序,它必须在没有任何交互的情况下运行。在这个应用程序中,我连接到一个MySQL服务器来检查最后更新的数据。这在我的工作站上运行没有问题,即使是从网络驱动器 然而,每当我把它放到我们的服务器上,让它为我运行时,它突然不能运行MySQL。连接失败。打开() 我目前正在使用: -MySQL连接器版本6.8.8 -.NET Framework 4.5.2 这里是它抛出的错误 System.TypeInitializationException: The type initi

我目前正在创建一个控制台应用程序,它必须在没有任何交互的情况下运行。在这个应用程序中,我连接到一个MySQL服务器来检查最后更新的数据。这在我的工作站上运行没有问题,即使是从网络驱动器

然而,每当我把它放到我们的服务器上,让它为我运行时,它突然不能运行MySQL。连接失败。打开()

我目前正在使用: -MySQL连接器版本6.8.8 -.NET Framework 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;
        }
    }
MySqlConnection-con;
公共MyDB()
{
记录器=动作记录器;
logger.Log(“----[启动MySQL]----”;
Log(“尝试创建MySQL数据库连接”);
尝试
{
string connectionString=“server=SERVERIP;uid=USERID;pwd=PASSWORD;database=database;”;
con=新的MySqlConnection();
con.ConnectionString=连接字符串;
logger.Log(“已接受连接”);
}
捕获(例外e)
{
Log(“MySQL异常:+e”);
Console.WriteLine(“发生错误,请阅读日志”);
}
logger.Log(“----[MySQL已启动]----”;
}
/// 
///打开到电子商务数据库的连接
/// 
///如果成功,则为True,否则为false
私有bool OpenConnection()
{
尝试
{
Log(“试图打开与服务器的连接”);
con.Open();
logger.Log(“连接已成功打开”);
返回true;
}
捕获(例外e)
{
logger.Log(“尝试失败”);
Log(“MySQL连接错误:+e”);
Console.WriteLine(“MySQL错误:+e”);
返回false;
}
}
我试过用谷歌搜索这个问题,但没有找到任何答案

我尝试过启用本机代码调试和SQL Server调试,但都没有效果


如果您需要更多信息,请随时询问。

似乎我没有得到关于我们服务器的正确通知(或者我忘记了这个细节),登录到我们生产服务器的用户没有与我的用户帐户相同的权限,这导致了我收到的MySQL错误。

,replicatormanager与您的代码有什么关系?你用它做什么?没有直接的。每当我调用MySqlConnection类中的Open()方法时,就会调用它。您确定允许计算机/用户访问您的数据库吗?我认为mysql可以抛出TypeInitializationException,但情况并非如此。是的,它被允许访问数据库。发布您的代码,包括连接字符串。还要检查生产服务器是否使用了复制。在没有看到代码的情况下,不可能猜出代码出了什么问题。缺少的权限只是简单的读/写。