Als u een foutmelding krijgt met de tekst "ERROR 3942 (HY000):Elke rij van een VALUES-clausule moet ten minste één kolom hebben ” in MySQL, zou u een lege rij-constructor kunnen hebben bij gebruik van de VALUES
verklaring.
Om dit probleem op te lossen, moet u ervoor zorgen dat u ten minste één waarde heeft in elke ROW()
clausule binnen de VALUES
verklaring.
Voorbeeld van de fout
Hier is een voorbeeld van code die resulteert in de fout:
VALUES ROW();
Resultaat:
ERROR 3942 (HY000): Each row of a VALUES clause must have at least one column, unless when used as source in an INSERT statement.
Dit is een heel eenvoudig voorbeeld, maar de eenvoud laat ons precies zien wat er mis ging. Ik gebruik de VALUES
statement, maar met een lege ROW()
clausule.
Oplossing
Om het probleem op te lossen, hoeven we alleen maar ten minste één waarde op te geven voor de ROW()
clausule:
VALUES ROW('Jet');
Resultaat:
+----------+ | column_0 | +----------+ | Jet | +----------+
Gewoonlijk zouden we meer dan één waarde opnemen in elke ROW()
clausule, en misschien meer dan één ROW()
clausule. Bijvoorbeeld:
VALUES ROW(1, 'Jet', 'Black'), ROW(2, 'Faye', 'Valentine');
Resultaat:
+----------+----------+-----------+ | column_0 | column_1 | column_2 | +----------+----------+-----------+ | 1 | Jet | Black | | 2 | Faye | Valentine | +----------+----------+-----------+
Hoe dan ook, we moeten ten minste één waarde opgeven voor elke ROW()
clausule.