错误:列'lat'的数据被截断

时间:2013-10-05 19:13:30

标签: php mysql wamp

我尝试将表单的位置信息保存到WAMP服务器数据库中。我可以在phpmyadmin页面中使用insert函数向表添加记录。 但是当我insert在表单中进行协调并提交此信息以将信息保存到数据库中时,我会看到此错误:

Data truncated for column 'lat' at row 1

我用这个列定义我的表:

place_id: int(10)
p_name: varchar(50)
lat: float(30,27)
lng: float(30,27)
addr: varchar(100)
tel: int(12)
category: varchar(15)
description: varchar(200)

我尝试保存的坐标之一是:

(47.61304128921687,-122.29001998901367)

该纬度为float(16,14) 除了数据长度错误外,代码中可能出错。

2 个答案:

答案 0 :(得分:1)

您使用非标准语法来声明FLOAT列。

http://dev.mysql.com/doc/refman/5.6/en/floating-point-types.html

尝试将这些列声明为FLOATDOUBLE。括号后的数字不会影响数字的存储,只会影响格式。

顺便说一句,47.61304128921687伪装成南北位置,精度约为1.1纳米。这显然不是那么精确。如果您正在使用商用级GPS,FLOAT可以为您处理的数据提供足够的精确度。如果您知道UTM和Lambert投影之间的区别,DOUBLE将满足您的需求。

答案 1 :(得分:0)

14位小数是不现实的。即使 5 decimal places = 0.00001度= 1.1132米(赤道)也可能无法实现,

<强>纬度

FLOAT(7,5)能够存储三位数和五位小数的任何值,因此可以存储在lat列中的值范围为-99.99999到99.99999(最大值)+90 -90(实际最大值) )

<强>经度

FLOAT(8,5)能够存储三位数和五位小数的任何值,因此可以存储在lng列中的值范围为-999.99999到999.99999(最大值)+180 -180(实际最大值) )