`MySqlDataReader.GetGuid`返回错误的 UUID

问题描述 投票:0回答:1

我使用

UUID_TO_BIN(UUID(), true)
生成 UUID 并将其存储为
BINARY(16)

但是,在获取值时:

var uuid = dataReader.GetGuid(name);
Console.WriteLine(uuid.ToString());

我确实打印了一个 uuid 字符串,但它与在列上运行

SELECT BIN_TO_UUID("col")
时的字符串不同。

我做错了什么?

  • 我尝试将连接字符串中的
    OldGuids
    设置为
    true
    但仍然得到相同的错误 uuid。
  • 我正在使用 MySql.Data .NET 连接器版本 8.3.0。服务器版本是8.0.36.
  • 我使用
    UUID_TO_BIN(UUID(), true)
    并将它们存储为
    BINARY(16)
    的原因是,根据我的阅读,我认为这是存储 uuid 并将其用作主键的最有效方法。

谢谢

c# mysql mysql-connector
1个回答
0
投票

尝试将连接字符串的

GuidFormat
的值指定为
Binary16
:

var sb = new MySqlConnectionStringBuilder
{
    GuidFormat = MySqlGuidFormat.Binary16,
};

原因是 MySQL 按字节顺序构造 GUID 字符串,而 .NET 将前三部分以默认字节序转换为整数形式。

MySqlDataReader.GetGuid
默认情况下不会更改字节序,因此一般情况下它会是 LE,除非指定了
GuidFormat
属性。

© www.soinside.com 2019 - 2024. All rights reserved.