2010-08-11 81 views
93

当我执行此SQL查询:Mysql的截断不正确DOUBLE值

UPDATE shop_category 
SET name = 'Secolul XVI - XVIII' 
    AND name_eng = '16th to 18th centuries' 
WHERE category_id = 4768 

我收到以下错误:

1292 - Truncated incorrect DOUBLE value: 'Secolul XVI - XVIII' 

'shop_category' 表的结构:

category_id mediumint(8) 
name  varchar(250) 
name_eng  varchar(250) 

哪有我解决这个问题?

谢谢。

+8

令人惊讶它是多么微不足道,这是多么因而容易错过。谢谢你问这个。 – 2011-06-09 21:08:03

+1

是否以任何方式确定此错误消息的真正含义是什么,并在哪些情况下显示?由于它发生在不涉及DOUBLE值的上下文中,因此似乎有些误导。 – syck 2017-03-28 10:04:48

+0

猜测它试图在AND之前计算'Secolul XVI-XVIII'的布尔值。 – 2018-03-07 10:54:33

回答

136

您不需要AND关键字。这里的correct syntax of the UPDATE statement

UPDATE 
    shop_category 
SET 
    name = 'Secolul XVI - XVIII', 
    name_eng = '16th to 18th centuries' 
WHERE 
    category_id = 4768 
+2

真的很高兴我发现这个答案之前,把电脑扔到墙上 – rbennell 2017-08-31 16:53:26

+2

所以绝对愚蠢的人,像我这样的错误,然而,'截断不正确的DOUBLE值'是一个非常没用的警告信息... – rbennell 2017-08-31 17:05:18

+0

感谢上帝我看到了这个答案,我很愚蠢。 – watchzerg 2018-01-24 14:53:10

8

尝试AND,

UPDATE shop_category 
SET name = 'Secolul XVI - XVIII', name_eng = '16th to 18th centuries' 
WHERE category_id = 4768 

UPDATE Syntax显示逗号应作为分隔符代替。

50

我得到这个异常不是因为AND而不是逗号,实际上我有这个异常只是因为我没有在where子句中使用撇号。

就像我的查询语句

update table set coulmn1='something' where column2 in (00012121); 

当我改变where子句where column2 in ('00012121');那么查询为我工作得很好。

+1

+1这也是我的问题,谢谢:-) – AlexP 2013-02-21 11:27:24

+1

同样的问题对我来说!我试图更新crm中的一个表,该表使用1作为admin用户的用户标识,而对于所有其他用户使用36个char guid。我的地方是指定user_id为1,没有引号。我认为这与mysql处于严格模式有关。 – 2013-04-25 22:49:08

+3

@danny_mulvihill我相信你在正确的轨道上。我在'sql_mode'中设置了'STRICT_TRANS_TABLES',并尝试更新'where子句中的某个数值受限(显示为)的字段抛出错误。改变模式,它会抛出一个警告,但仍然没有应用更新。经仔细检查,where子句中使用的列,尽管只有看起来是整数值,实际上是一个'varchar(20)' – 2014-07-30 13:54:41

1
$up="UPDATE users1 SET user_fname='$fname' and user_lname='$lname' where user_emp_code=$emp"; 

移除,并与,更换and后其做工精细:

$up="UPDATE users1 SET user_fname='$fname', user_lname='$lname' where user_emp_code=$emp";

-4

我得到了同样的错误,那就是两个列值之间更换后,并与解决“”。

UPDATE忽略TRANSFORMERDATA SET TRANSFORMERNAME = 'DummyXmer.jar',备注= 'DummeyXmer' WHERE GENERATEDRUNID = 'DB1-DB2RYTSYFGWTY8966'

+4

已经有4个答案了。 – bummi 2015-02-07 11:37:57

3

主要无效的查询字符串将给予此警告。

INSERT INTO users (user_name) SELECT name FROM site_users WHERE 
INSTR(status, 'active'>0); 

正确:

由于微妙的语法错误(错位的右括号)使用INSTR功能时

错误

INSERT INTO users (user_name) SELECT name FROM site_users WHERE 
INSTR(status, 'active')>0; 
0

我只是浪费我的时间就这个问题和想补充一个额外的情况下,这个错误出现。

SQL Error (1292): Truncated incorrect DOUBLE value: 'N0003' 

测试数据

CREATE TABLE `table1 ` (
    `value1` VARCHAR(50) NOT NULL 
); 
INSERT INTO table1 (value1) VALUES ('N0003'); 

CREATE TABLE `table2 ` (
    `value2` VARCHAR(50) NOT NULL 
); 

INSERT INTO table2 (value2) 
SELECT value1 
FROM table1 
WHERE 1 
ORDER BY value1+0 

问题是ORDER BY value1+0 - 类型转换。

我知道它不回答这个问题,但是这是在谷歌的第一个结果对于这个错误,它应该有其他

相关问题