Quando a consulta SQL abaixo é executada:
UPDATE shop_category
SET name = 'Secolul XVI - XVIII'
AND name_eng = '16th to 18th centuries'
WHERE category_id = 4768
O seguinte erro é gerado:
1292 - Truncated incorrect DOUBLE value: 'Secolul XVI - XVIII'
Como consertar isto?
shop_category
estrutura da tabela:
category_id mediumint(8)
name varchar(250)
name_eng varchar(250)
Respostas:
Você não precisa da
AND
palavra - chave. Aqui está a sintaxe correta da instrução UPDATE :fonte
Eu estava recebendo essa exceção não por causa de AND em vez de vírgula; na verdade, eu estava tendo essa exceção apenas porque não estava usando apóstrofos na cláusula where.
Como minha consulta foi
quando mudei a cláusula where
where column2 in ('00012121');
, a consulta funcionou bem para mim.fonte
STRICT_TRANS_TABLES
definidosql_mode
e tentar atualizar um campo limitado com (o que parecia ser) um valor numérico nawhere
cláusula gerou um erro. Ao mudar de modo, lançou um aviso, mas ainda não aplicou a atualização. Após uma inspeção mais próxima, a coluna usada na cláusula onde, apesar de só ter o que parecia ser valores inteiros, foi realmente umvarchar(20)
Tente substituir o
AND
por,
A sintaxe UPDATE mostra que vírgula deve ser usada como separador.
fonte
O que basicamente é
É uma sintaxe incorreta que faz com que o MySQL pense que você está tentando fazer algo com uma coluna ou parâmetro com o tipo incorreto "DOUBLE".
Aprenda com o meu erro
No meu caso, atualizei a coluna varchar em uma configuração de tabela em
NULL
que o valor0
estava. Minha consulta de atualização foi assim:Agora, já que o tipo real de
myValue
isVARCHAR(255)
é o seguinte:E agora
myTable
está praticamente vazio, porquemyValue
agora estáNULL
para CADA LINHA na mesa! Como isso aconteceu?* gritos internos *
Mais de 30 mil linhas agora têm dados ausentes.
* gritos internos se intensificam *
Graças a Deus por backups. Consegui recuperar todos os dados.
* Intensidade gritante interna diminui *
A consulta corrigida é a seguinte:
Eu gostaria que isso fosse mais do que apenas um aviso, por isso é menos perigoso esquecer essas citações.
* Fim da gritaria interna *
fonte
Acabei de perder meu tempo com isso e queria adicionar um caso adicional em que esse erro se apresente.
Dados de teste
O problema é
ORDER BY value1+0
- conversão de tipo.Eu sei que ele não responde à pergunta, mas este é o primeiro resultado no Google para esse erro e deve ter outros exemplos em que esse erro se apresenta.
fonte
As cadeias de consulta principalmente inválidas darão esse aviso.
Errado devido a um erro sutil de sintaxe (parêntese direito incorreto) ao usar a
INSTR
função:Corrigir:
fonte
Parece que o mysql lida com a conversão de tipos normalmente com as instruções SELECT. O campo shop_id é do tipo varchar, mas as instruções select funcionam
Mas quando você tenta atualizar os campos
Falha com erro Valor DOUBLE incorreto truncado: '1t5hxq9'
Você precisa colocar o shop_id 26244317283 entre aspas '26244317283' para que a consulta funcione, pois o campo é do tipo varchar, não int
fonte
Se você estiver tendo esse problema com uma inserção semelhante à abaixo, o problema pode ser simplesmente a falta de espaço entre
--
o texto do comentário e o seguinte:O problema disso é que, na
--something
verdade, deve ser-- something
.fonte
Eu experimentei esse erro ao usar o bindParam e especificando PDO :: PARAM_INT onde estava passando uma string. Mudar para PDO :: PARAM_STR corrigiu o erro.
fonte
Eu experimentei esse erro quando tentei fazer um WHERE EXIST em que a subconsulta correspondia a 2 colunas que eram tipos diferentes de forma acidental. As duas tabelas também eram diferentes mecanismos de armazenamento.
Uma coluna era um CHAR (90) e a outra era um BIGINT (20).
Uma tabela era o InnoDB e a outra era MEMORY.
Parte da consulta:
A alteração do tipo de coluna na coluna de BIGINT para CHAR resolveu o problema.
fonte