我有一个使用ADO.NET Driver for MySQL(Connector / NET)的C#.NET 3.5应用程序。它将Guid.NewGuid()
作为BINARY(16)
存储在MySQL数据库中。
我有另一个使用PHP 5.3.4的应用程序需要能够将该二进制值读取为GUID字符串,并使用相同的16字节二进制值对GUID字符串进行编码。
作为一个例子,我希望能够在这两件事之间进行转换:
GUID string: E241346C-504F-4BE5-BDF3-1B8274815597
BINARY(16): 65 32 34 31 33 34 36 63 2d 35 30 34 66 2d 34 62
我如何在PHP中执行此操作?
答案 0 :(得分:0)
问题是该字段是BINARY(16),但My SQL连接器试图在其中存储CHAR(36)。 (他们改变了在v6.1.1中格式化GUID的方式) 因此,我的GUID的最后20个字节被静默截断。 (我不知道为什么连接器没有抛出异常。)
一旦我将数据库更改为将GUID存储为CHAR(36),它就可以正常工作。或者,我可以在连接字符串中使用oldguids=true
元素。