Ако получавате грешка, която гласи „ГРЕШКА 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()
клауза.