我们必须使用 GUID,识别从 SQL Server 导出到 MySQL 的记录。我们在 MySQL 中有一个像这样的表:
CREATE TABLE IF NOT EXISTS `images` (
`idImage` binary(16) NOT NULL,
`caption` varchar(1000),
`preview` blob,
`lastModified` datetime NOT NULL,
PRIMARY KEY (`idImage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
并通过以下方式插入数据:
INSERT INTO `images`
VALUES (
-- .NET: Guid.Parse("12345678-1234-1234-1234-123456789001")
UNHEX(REPLACE('78563412-3412-3412-1234-123456789001','-','')),
'My first sample image',
NULL,
'2014-08-26 15:51:25'
);
在 Lightswitch 中设置数据源后,我得到了: Lightswitch 识别我的 GUID 主键!!!就是棒 :-) 这是屏幕: 是的!那太棒了!
但是现在,我想要 CRUD:
- 我无法创建新记录。 Lightswitch 说:第 1 行“idImage”列的数据太长
- 我无法更新或删除任何现有记录。 Lightswitch 说:另一用户已删除此记录。
这里出了什么问题?
最佳答案
这个问题很容易解决。您必须告诉 MySQL 连接器使用 GUID 的另一个(较旧的)说明。 通常这是通过添加
来完成的Old Guids=true;
到连接字符串。 在您的情况(Lightswitch 项目)中,您必须使用“数据源向导”更改此选项。 您将在菜单中找到它:
附加数据源向导 > 连接属性 > 高级属性
就是这样!
关于mysql - 二进制(16)作为主键 : Lightswitch recognizes GUID but can't write them correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604329/