Ако получавате грешка, която гласи „ГРЕШКА 3942 (HY000):Всеки ред от клауза VALUES трябва да има поне една колона ” в MySQL, можете да имате празен конструктор на ред, когато използвате VALUES изявление.
За да отстраните този проблем, уверете се, че имате поне една стойност във всеки ROW() клауза в VALUES изявление.
Пример за грешката
Ето пример за код, който води до грешката:
VALUES ROW(); Резултат:
ERROR 3942 (HY000): Each row of a VALUES clause must have at least one column, unless when used as source in an INSERT statement.
Това е много прост пример, но неговата простота ни показва какво точно се обърка. Използвам VALUES израз, но с празен ROW() клауза.
Решение
За да коригираме проблема, всичко, което трябва да направим, е да предоставим поне една стойност за ROW() клауза:
VALUES ROW('Jet'); Резултат:
+----------+ | column_0 | +----------+ | Jet | +----------+
Обикновено бихме включили повече от една стойност във всеки ROW() клауза и може би повече от един ROW() клауза. Например:
VALUES ROW(1, 'Jet', 'Black'), ROW(2, 'Faye', 'Valentine'); Резултат:
+----------+----------+-----------+ | column_0 | column_1 | column_2 | +----------+----------+-----------+ | 1 | Jet | Black | | 2 | Faye | Valentine | +----------+----------+-----------+
Така или иначе, трябва да предоставим поне една стойност за всеки ROW() клауза.