C#MySQL在服务器上运行时引发异常
我目前正在创建一个控制台应用程序,它必须在没有任何交互的情况下运行。在这个应用程序中,我连接到一个MySQL服务器来检查最后更新的数据。这在我的工作站上运行没有问题,即使是从网络驱动器 然而,每当我把它放到我们的服务器上,让它为我运行时,它突然不能运行MySQL。连接失败。打开() 我目前正在使用: -MySQL连接器版本6.8.8 -.NET Framework 4.5.2 这里是它抛出的错误C#MySQL在服务器上运行时引发异常,c#,mysql,C#,Mysql,我目前正在创建一个控制台应用程序,它必须在没有任何交互的情况下运行。在这个应用程序中,我连接到一个MySQL服务器来检查最后更新的数据。这在我的工作站上运行没有问题,即使是从网络驱动器 然而,每当我把它放到我们的服务器上,让它为我运行时,它突然不能运行MySQL。连接失败。打开() 我目前正在使用: -MySQL连接器版本6.8.8 -.NET Framework 4.5.2 这里是它抛出的错误 System.TypeInitializationException: The type initi
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,但情况并非如此。是的,它被允许访问数据库。发布您的代码,包括连接字符串。还要检查生产服务器是否使用了复制。在没有看到代码的情况下,不可能猜出代码出了什么问题。缺少的权限只是简单的读/写。