我试图更新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相关的帖子,但我没有得到相关答案。
答案 0 :(得分:1)
此查询
update UserAccount set currentDataBalance=253600l where userId=1;
返回此错误:
ERROR 1054(42S22):未知栏' 253600l'在'字段列表'
因为你的"号码中有一封信#34; :253600 l ,它将您的数字转换为字符串。由于此字符串未包含引号,因此MySQL假定它是数据库中对象的名称,在本例中为列。 该对象不存在,因此存在此特定错误。
答案 1 :(得分:0)
您的更新查询中有一个小的拉丁字符“L”而不是数字“1”。由于您要设置的值看起来像MySQL的标识符,它会尝试使用此类名称查找列,但无法找到它,这就是您收到此错误的原因。