#mysql #sql
#mysql #sql
Вопрос:
Я пытаюсь вставить в свою таблицу что-то с частичными данными и оставить остальное по умолчанию, но почему-то он продолжает указывать неправильный синтаксис
Мой запрос выглядит следующим образом:
INSERT INTO day
(1030, 1100, date, tech)
VALUES ('356-635-3633', '356-635-3633', '2019-04-07', 'Thy')
#1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования вблизи ЗНАЧЕНИЙ ‘1030, 1100, дата, технология)(‘356-635-3633’, ‘356-635-3633’, ‘2019-04-07’, ‘ Th’ в строке 1
Запрос, подобный этому, работает, хотя:
INSERT INTO day (date, tech) VALUES ('2019-04-07', 'Thy')
Тип данных для всех этих столбцов — varchar(30)
Ответ №1:
Вам нужно было бы заключить эти идентификаторы из всех цифр в кавычки, используя обратные метки;
INSERT INTO day
(`1030`, `1100`, date, tech)
VALUES ('356-635-3633', '356-635-3633', '2019-04-07', 'Thy')
Из документации:
Идентификаторы могут начинаться с цифры, но, если они не заключены в кавычки, могут состоять не только из цифр.
Демонстрация в DB Fiddle (вы можете раскомментировать исходный список столбцов, чтобы сгенерировать ошибку).
ПРИМЕЧАНИЕ: day
и date
соответствуют названиям функций MySQL. Использование их подобным образом не приводит к возникновению ошибки, но все равно было бы неплохо окружить их обратными метками, просто чтобы избежать какой-либо двусмысленности, следовательно:
INSERT INTO `day`
(`1030`, `1100`, `date`, tech)
VALUES ('356-635-3633', '356-635-3633', '2019-04-07', 'Thy')