【问题标题】:Update Query issue . 0 rows updated when there should have been 1. HeidiSQL更新查询问题。当应该有 1 时更新了 0 行。HeidiSQL
【发布时间】:2014-05-13 16:12:12
【问题描述】:

我有一张这样的桌子:

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 连接到服务器 我所做的行是这些:

想要使 IDACCOUNT 列的所有行的值都为“1”,因此它将分配给我数据库中的用户 1,然后引入一个 json 该数据数组来执行一些任务。我也想让 ID 增加,但它也给我带来了错误。

【问题讨论】:

  • 为什么这个标签是jquery
  • alter table 语句也应该失败。 IDACCOUNT 列不能是显示数据的唯一 PRIMARY KEY 列。
  • 对不起,这是查询错误
  • 我想我现在明白了这个问题:您必须先更新此列中的值才能创建所需的 primary key

标签: mysql heidisql


【解决方案1】:

此查询失败,因为您要求 DOUBLE 字段 LatLon 完全相等。不需要这些列来标识您的行。将你的sql语句重写为

UPDATE `MW_Locations` 
   SET `IDACCOUNT`=1 
 WHERE `Name`='Panteon';

此列中的此值足以识别您的行。

我引用the MySQL manual:

因为浮点值是近似值而不是精确存储 值,试图在比较中将它们视为精确可能会导致 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多