我有一张这样的table:
ALTER TABLE `MW_Locations` CHANGE COLUMN `ID` `ID` INT(20) NULL DEFAULT NULL FIRST, CHANGE COLUMN `UDID` `UDID` INT(20) NULL DEFAULT NULL AFTER `ID`, CHANGE COLUMN `IDACCOUNT` `IDACCOUNT` INT(20) NULL DEFAULT NULL AFTER `UDID`, CHANGE COLUMN `Name` `Name` VARCHAR(50) NULL DEFAULT NULL AFTER `IDACCOUNT`, CHANGE COLUMN `Lat` `Lat` DOUBLE NULL DEFAULT NULL AFTER `Name`, CHANGE COLUMN `Lon` `Lon` DOUBLE NULL DEFAULT NULL AFTER `Lat`, CHANGE COLUMN `IDMWDevice` `IDMWDevice` INT(50) NULL DEFAULT NULL AFTER `Lon`, CHANGE COLUMN `Desc` `Desc` VARCHAR(50) NULL DEFAULT NULL AFTER `IDMWDevice`, CHANGE COLUMN `IDAction` `IDAction` INT(20) NULL DEFAULT NULL AFTER `Desc`, CHANGE COLUMN `Status` `Status` VARCHAR(50) NULL DEFAULT NULL AFTER `IDAction`, ADD PRIMARY KEY (`IDACCOUNT`);
问题是我不能做任何更新。就像这个:
UPDATE `MW_Locations` SET `IDACCOUNT`=1 WHERE `ID`=0 AND `UDID`=0 AND `IDACCOUNT`=0 AND `Name`='Panteon' AND `Lat`=25.6789521128695 AND `Lon`=100.336310863495 AND `IDMWDevice`=0 AND `Desc`='' AND `IDAction`=0 AND `Status`='' LIMIT 1;
我使用heidisql连接到一个服务器的行,我做了这些:
我想让所有行的列IDACHALL的值为“1”,所以它将被分配给用户1在我的数据库中,稍后带来了一个JSON的数据数组,使一些任务。我也想使ID递增,但它也给我带来了错误。
2条答案
按热度按时间5kgi1eie1#
此查询失败,因为您要求
DOUBLE
字段Lat
和Lon
完全相等。不需要这些列来标识您的行。重写您的sql语句,此列中的此值足以标识您的行。
引用the MySQL manual:
由于浮点值是近似值,不存储为精确值,因此在比较中将其视为精确值可能会导致问题。
iovurdzv2#
还要检查更新时是否有该表的触发器。如果试图SET的字段是由更新时的触发器计算的,则始终会收到该错误,并且永远不会更新。