MYSQL Усеченное неверное значение DOUBLE

Когда ниже приведен SQL-запрос:

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 таблицы shop_category:

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

Ответ 2

Я получал это исключение не из-за И вместо запятой, на самом деле у меня было это исключение только потому, что я не использовал апострофы в where where.

Как и мой запрос

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

когда я изменил предложение where на where column2 in ('00012121');, тогда запрос работал отлично для меня.

Ответ 3

Попробуйте заменить AND на ,

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

Синтаксис UPDATE показывает, что запятая должна использоваться как разделитель.

Ответ 4

В основном недопустимые строки запроса выдадут это предупреждение.

Неверно из-за тонкой синтаксической ошибки (неправильной скобки) при использовании функции INSTR:

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

Правильно:

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

Ответ 5

Я просто потратил впустую свое время на это и хотел добавить дополнительный случай, когда эта ошибка представляет себя.

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 - тип приведения.

Я знаю, что он не отвечает на вопрос, но это первый результат в Google для этой ошибки, и у него должны быть другие примеры, где эта ошибка представляет себя.

Ответ 6

Что это в основном

Это неправильный синтаксис, который заставляет MySQL думать, что вы пытаетесь что-то сделать со столбцом или параметром, который имеет неправильный тип "DOUBLE".

Учись на моей ошибке

В моем случае я обновил столбец varchar в параметре таблицы NULL где стояло значение 0. Мой запрос на обновление был таким:

UPDATE myTable SET myValue = NULL WHERE myValue = 0;

Теперь, поскольку фактическим типом myValue является VARCHAR(255) это выдает предупреждение:

+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+

А теперь myTable практически пуст, потому что myValue теперь NULL для myValue в таблице! Как это случилось?
* внутренний крик *

Более 30 тысяч строк теперь имеют недостающие данные.
* внутренний крик усиливается *

Слава Богу за резервные копии. Я был в состоянии восстановить все данные.
* внутренняя интенсивность крика снижается *

Исправленный запрос выглядит следующим образом:

UPDATE myTable SET myValue = NULL WHERE myValue = '0';
                                                  ^^^
                                                  Quotation here!

Хотелось бы, чтобы это было больше, чем просто предупреждение, поэтому было бы менее опасно забывать эти цитаты.

* Конец внутреннего крика *

Ответ 7

$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";

Ответ 8

Если вы получаете эту проблему с помощью вставки, которая выглядит, как показано ниже, проблема может быть просто отсутствие пространства между -- и текстом комментария:

insert into myTable (a, b, c)
values (
   123 --something
  ,345 --something else
  ,567 --something something else
);

Проблема в том, что --something должен быть -- something с пробелом.

Ответ 9

Кажется, mysql изящно обрабатывает приведение типов с помощью операторов SELECT. Поле shop_id имеет тип varchar, но операторы выбора работают

select * from shops where shop_id = 26244317283;

Но когда вы пытаетесь обновить поля

update stores set store_url = 'https://test-url.com' where shop_id = 26244317283;

Сбой с ошибкой. Усеченное неверное значение DOUBLE: '1t5hxq9'

Вам нужно поместить shop_id 26244317283 в кавычки '26244317283', чтобы запрос работал, так как поле имеет тип varchar, а не int

update stores set store_url = 'https://test-url.com' where shop_id = '26244317283';

Ответ 10

Я получал ту же ошибку, и это было разрешено после замены AND символом "," между двумя значениями столбца.

UPDATE IGNORE TRANSFORMERDATA SET TRANSFORMERNAME = 'DummyXmer.jar', REMARKS = 'DummeyXmer' WHERE GENERATEDRUNID = 'DB1-DB2RYTSYFGWTY8966'