繁体   English   中英

MySQL-字段列表中的未知列

[英]MySQL--unknown column in field list

我看不到为什么下面的UPDATE在控制台中能正常工作,但是在我的Java代码中却失败了

MariaDB [testdb]> DESCRIBE datasift_geo;
+-------------+---------------------+------+-----+---------+-------+
| Field       | Type                | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| datasift_id | bigint(20) unsigned | NO   | PRI | NULL    |       |
| latitude    | decimal(17,14)      | YES  |     | NULL    |       |
| longitude   | decimal(17,14)      | YES  |     | NULL    |       |
| location    | varchar(100)        | YES  |     | NULL    |       |
| coord       | point               | YES  |     | NULL    |       |
+-------------+---------------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

MariaDB [testdb]> SELECT * FROM datasift_geo;
+-------------+-------------------+-------------------+------------+-------+
| datasift_id | latitude          | longitude         | location   | coord |
+-------------+-------------------+-------------------+------------+-------+
|        1601 | 51.45713800000000 | -2.60802800000000 | Bristol UK | NULL  |
+-------------+-------------------+-------------------+------------+-------+

MariaDB [testdb]> UPDATE datasift_geo SET coord = GeomFromText('POINT(51.45713800000000 -2.60802800000000)');
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

================

@Test
public void testGeoCoord() throws SQLException {
    int id = 1601;
    float latitude = 51.45713806152344f;
    float longitude = -2.608027935028076f;
    String sql = "UPDATE `datasift_geo` SET `datasift_geo`.`coord` = GeomFromText('POINT(" + latitude + " " + longitude + ")') WHERE datasift_id = " + id;
    // get database connection, create a PreparedStatement, execute the UPDATE
}

======

执行更新的结果

java.sql.SQLSyntaxErrorException:“字段列表”中的未知列“ datasift_geo.coord”

从您用JAVA代码编写的SQL中,您似乎已经在SQL中提供了tableName.ColumnName 您只应提供列名。

String sql = "UPDATE `datasift_geo` SET **`datasift_geo`.`coord`** = GeomFromText('POINT(" + latitude + " " + longitude + ")') WHERE datasift_id = " + id;

语法为: UPDATE TABLE_NAME SET COLUMN_NAME
您的Java代码具有: UPDATE TABLE_NAME SET TABLE_NAME.COLUMN_NAME-错误

也可以从异常中看出

因此,您的Jave Code中的SQL应该如下所示:

String sql = "UPDATE `datasift_geo` SET `coord` = GeomFromText('POINT(" + latitude + " " + longitude + ")') WHERE datasift_id = " + id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM