Hvis du får en fejlmeddelelse, der lyder "FEJL 3942 (HY000):Hver række i et VALUES-udtryk skal have mindst én kolonne ” i MySQL kan du have en tom rækkekonstruktør, når du bruger VALUES
erklæring.
For at løse dette problem skal du sørge for, at du har mindst én værdi i hver ROW()
klausul i VALUES
erklæring.
Eksempel på fejlen
Her er et eksempel på kode, der resulterer i fejlen:
VALUES ROW();
Resultat:
ERROR 3942 (HY000): Each row of a VALUES clause must have at least one column, unless when used as source in an INSERT statement.
Dette er et meget simpelt eksempel, men dets enkelhed viser os præcis, hvad der gik galt. Jeg bruger VALUES
sætning, men med en tom ROW()
klausul.
Løsning
For at løse problemet er det eneste, vi skal gøre, at angive mindst én værdi for ROW()
klausul:
VALUES ROW('Jet');
Resultat:
+----------+ | column_0 | +----------+ | Jet | +----------+
Normalt vil vi inkludere mere end én værdi i hver ROW()
klausul og måske mere end én ROW()
klausul. For eksempel:
VALUES ROW(1, 'Jet', 'Black'), ROW(2, 'Faye', 'Valentine');
Resultat:
+----------+----------+-----------+ | column_0 | column_1 | column_2 | +----------+----------+-----------+ | 1 | Jet | Black | | 2 | Faye | Valentine | +----------+----------+-----------+
Uanset hvad, skal vi give mindst én værdi til hver ROW()
klausul.