2016-11-09 4 views
1

У меня есть этот запрос: Используя имя столбца в CONCAT() функция дает Синтаксическая ошибка 1064

UPDATE `fitment_drums` SET `liters` = CONCAT(`liters`,'.0') WHERE `liters` LIKE '_' 

Что приводит к ошибке:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''.0') FROM `fitment_drums` WHERE `liters` LIKE '_'' at line 1

Когда я заменить обычную строку, например. CONCAT ('asdf','.0') все нормально работает. Я попытался с помощью оператора выбора в качестве аргумента, а также пытался использовать временную таблицу:

CREATE TEMPORARY TABLE t1 (SELECT * FROM `fitment_drums` WHERE liters like '_') 
UPDATE `fitment_drums` SET liters = CONCAT(t1.liters,'.0') where t1.id = id 
+2

Является ли литер числовым полем? – grahamj42

+0

Это поле варчара. – qSort

+0

У вас нет точки с запятой после инструкции CREATE TABLE. –

ответ

1

Хорошо, так что я нашел «решение». Я выполнял запрос в режиме моделирования, что приводит к ошибке, указанной выше. Поэтому я сделал резервную копию таблицы и выполнил запрос в режиме реального времени, и это сработало. (для записи я использую phpMyAdmin)

Очень странно.

Спасибо всем, кто пытался помочь!

1

Поскольку вы обнаружили, что используете phpMyAdmin, вы должны знать, что временные таблицы автоматически отбрасываются по мере подключения базы данных.

Каждый просмотр страницы в phpMyAdmin представляет собой отдельный запрос PHP и, следовательно, отдельное соединение с базой данных.

Итак, если вы указали CREATE TEMPORARY TABLE в phpMyAdmin, тогда временная таблица не существовала к тому времени, когда вы запустили UPDATE.

Смежные вопросы