MySQL精度DECIMAL(13,9)用于longitude。

24 浏览
0 Comments

MySQL精度DECIMAL(13,9)用于longitude。

我正在尝试更新MySQL表中的一行数据,该列的数据是-122.333351900,并且已经存在,因此长度与数据类型和长度匹配没有问题。

但是,当我运行UPDATE sql命令时,它失败并显示错误信息:

ERROR 1264 (22003): 列 'longitude' 的值超出范围,位于第1行。

我不明白为什么会出错?我已经插入了这个值,现在运行UPDATE命令时却失败了!

0
0 Comments

MySQL中的DECIMAL类型用于存储精确的十进制数值。在使用DECIMAL类型时,可以指定精度和小数位数。例如,DECIMAL(13,9)表示总共13位数字,其中有9位用于小数部分。

在使用MySQL时,有用户遇到了一个问题:MySQL的DECIMAL(13,9)类型在存储经度(longitude)时出现了错误。下面将介绍出现这个问题的原因以及解决方法。

问题的原因是因为在表中存在一个触发器(trigger)。触发器在表的更新或插入操作之前或之后执行。当触发器出现错误时,看起来像是更新操作出现了问题,实际上是相关的触发器失败了。

解决这个问题的方法是检查表中是否存在触发器,并确保触发器中的DECIMAL定义与存档表中的列一致。如果发现触发器的DECIMAL定义与存档表中的列不同,需要将它们进行调整,使其保持一致。

以下是一个示例触发器的代码:

CREATE TRIGGER my_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
  -- 触发器代码
END;

如果发现触发器的DECIMAL定义与存档表中的列不同,可以通过修改触发器的代码来解决问题。具体的修改方法取决于具体的需求和表结构,这里不再赘述。

通过以上的解决方法,可以解决MySQL中DECIMAL(13,9)类型存储经度时出现的问题。检查并调整触发器的DECIMAL定义,确保其与存档表中的列一致,可以避免相关触发器的错误导致更新操作出错的情况发生。

0