mysql update ERROR 1054:'字段列表'中的未知列'x'

时间:2017-07-12 08:30:27

标签: mysql sql mysql-5.7

我试图更新mysql表并获得ERROR 1054,然后发生了一些奇怪的事情。

表架构

CREATE TABLE `useraccount` (
  `userId` bigint(20) NOT NULL,
  `currentBalance` float NOT NULL,
  `currentDataBalance` bigint(20) NOT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我的表中有一个条目,即

mysql> select * from UserAccount;
+--------+----------------+--------------------+
| userId | currentBalance | currentDataBalance |
+--------+----------------+--------------------+
|      1 |              0 |               4296 |
+--------+----------------+--------------------+

我尝试更新currentDataBalance字段并收到错误

  

ERROR 1054(42S22):'字段列表'中的未知列'253600l'

mysql> update UserAccount set currentDataBalance=253600l where userId=1;
ERROR 1054 (42S22): Unknown column '253600l' in 'field list'

然后我删除了更新值的最后一位数字(从253600l到253600)并且值已更新

mysql> update UserAccount set currentDataBalance=253600 where userId=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

然后我再次将值更改为上一个(从253600到2536001),此时值已更新。

mysql> update UserAccount set currentDataBalance=2536001 where userId=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

我在stackoverflow上经历了许多与错误1054相关的帖子,但我没有得到相关答案。

2 个答案:

答案 0 :(得分:1)

此查询

update UserAccount set currentDataBalance=253600l where userId=1;

返回此错误:

  

ERROR 1054(42S22):未知栏' 253600l'在'字段列表'

因为你的"号码中有一封信#34; :253600 l ,它将您的数字转换为字符串。由于此字符串未包含引号,因此MySQL假定它是数据库中对象的名称,在本例中为列。 该对象不存在,因此存在此特定错误。

答案 1 :(得分:0)

您的更新查询中有一个小的拉丁字符“L”而不是数字“1”。由于您要设置的值看起来像MySQL的标识符,它会尝试使用此类名称查找列,但无法找到它,这就是您收到此错误的原因。