mysql - 二进制(16)作为主键 : Lightswitch recognizes GUID but can't write them correctly

标签 mysql visual-studio-lightswitch

我们必须使用 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 recognizes Binary(16) as Guid Lightswitch 识别我的 GUID 主键!!!就是棒 :-) 这是屏幕: Guid on a screen 是的!那太棒了!

但是现在,我想要 CRUD:

  • 我无法创建新记录。 Lightswitch 说:第 1 行“idImage”列的数据太长
  • 我无法更新或删除任何现有记录。 Lightswitch 说:另一用户已删除此记录。

这里出了什么问题?

最佳答案

这个问题很容易解决。您必须告诉 MySQL 连接器使用 GUID 的另一个(较旧的)说明。 通常这是通过添加

来完成的
Old Guids=true;

到连接字符串。 在您的情况(Lightswitch 项目)中,您必须使用“数据源向导”更改此选项。 您将在菜单中找到它:

附加数据源向导 > 连接属性 > 高级属性

enter image description here

就是这样!

关于mysql - 二进制(16)作为主键 : Lightswitch recognizes GUID but can't write them correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604329/

相关文章:

c# - 灯开关 : How to change the display text in Details Modal Picker

c# - 将数据从一个控件绑定(bind)到另一个控件

php - CakePhp - 如何访问 find->innerJoinWith 中的变量?

php - MySQL和PHP解析奇怪的字符串

mysql - VB.Net 中 Mysql 中插入查询的语法错误

c# - 电灯开关数据源错误中的共享点

c# - 将 MySQL 中的数据库更新为 LightSwitch 中的 SQL 服务器

mysql - 如何获取特定行的列值的计数?

Mysql时间分布

c# - 灯光开关 : How do I place my business logic into a separate assembly?