【问题标题】:C# with MySQL - Error: "Guid should contain 32 digits with 4 dashes" when trying to open the connection带有 MySQL 的 C# - 尝试打开连接时出现错误:“Guid 应包含 32 位数字和 4 个破折号”
【发布时间】:2018-11-08 14:05:02
【问题描述】:

我开发了一个软件,现在是时候测试它与在线服务器的连接了。 我使用 Visual Studio 在 C# 中开发,我正在尝试连接到 MySQL 服务器。具体来说,我正在尝试连接到 db4free 服务器上的测试服务器。 我将我的 ConnectionString 更改为:

connectionString = "SERVER=db4free.net;PORT=3306;DATABASE=prpsystem;UID=database;PWD=password;";

但是当我尝试打开连接以检查登录是否正常时,Visual Studio 显示此消息错误:

Guid 应包含 32 位数字和 4 个破折号。

你们知道发生了什么吗?感谢您的帮助。

【问题讨论】:

标签: c# mysql guid


【解决方案1】:

您的崩溃来自Driver.LoadCharacterSets,即executing SHOW COLLATION。这是已针对连接器/NET 驱动程序报告的bug 92982

根据该案例的 OP,他通过在 MySQL 服务器的 my.cnf 中禁用 skip-character-set-client-handshake 设置来解决问题。如果您也有该设置,请尝试禁用它以查看是否可以解决问题。

否则,您可以切换到 MySqlConnector,这是 MySQL 的备用 ADO.NET 库,它没有此错误。

【讨论】:

  • 成功了!!!非常感谢。 NuGet Galeery 中的 MySqlConnector 工作正常。
  • 我通过添加 OldGuids=True; 使用 db4free 和 MySql.Data nuget 包解决了这个问题;到连接字符串
  • @noontz 请注意,使用OldGuids=true,任何BINARY(16) 列都将返回为Guid 而不是byte[],这可能是令人惊讶的行为。
  • @BradleyGrainger 感谢警告.. 我对此一无所知。这是一种尝试和错误的方法,导致我提出了修复建议
猜你喜欢
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
相关资源
最近更新 更多