Node/MySQl Error: ER_WRONG_VALUE: Incorrect DATE value

  • Författare
  • Meddelande
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11198
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Node/MySQl Error: ER_WRONG_VALUE: Incorrect DATE value

Inlägg11 feb 2020, 14:52

Du får fel när du gör en SELECT i databasen.
Searching for: al
(node:273) UnhandledPromiseRejectionWarning: Error: ER_WRONG_VALUE: Incorrect DATE value: 'al'
at Query.Sequence._packetToError (/home/dbwebb/repo/me/kmom02/terminal1/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)


Eventuellt beror det på att du gör en jämförelse mellan datum och en sträng, kan se ut så här:
Kod: Markera allt
    sql = `
        SELECT
            akronym,
            fornamn,
            efternamn,
            avdelning,
            lon,
            kompetens,
            fodd
        FROM larare
        WHERE
            akronym LIKE ?
            OR fornamn LIKE ?
            OR efternamn LIKE ?
            OR avdelning LIKE ?
            OR lon = ?
            OR kompetens = ?
            OR fodd = ?
        ORDER BY akronym;
    `;
    res = await db.query(sql, [like, like, like, like, search, search, search]);


Det är den sista delen med OR fodd = ? som kan ge felet. Man kan återskapa felet i MySQL.

Kod: Markera allt
MySQL [skolan]> select * from larare;
+---------+-----------+-----------+------------+------+-------+------------+-----------+
| akronym | avdelning | fornamn   | efternamn  | kon  | lon   | fodd       | kompetens |
+---------+-----------+-----------+------------+------+-------+------------+-----------+
| ala     | DIPT      | Alastor   | Moody      | M    | 27594 | 1943-04-03 |         1 |
| dum     | ADM       | Albus     | Dumbledore | M    | 85000 | 1941-04-01 |         7 |
| fil     | ADM       | Argus     | Filch      | M    | 27594 | 1946-04-06 |         3 |
| gyl     | DIPT      | Gyllenroy | Lockman    | M    | 27594 | 1952-05-02 |         1 |
| hag     | ADM       | Hagrid    | Rubeus     | M    | 30000 | 1956-05-06 |         2 |
| hoc     | DIDD      | Madam     | Hooch      | K    | 37580 | 1948-04-08 |         1 |
| min     | DIDD      | Minerva   | McGonagall | K    | 49880 | 1955-05-05 |         2 |
| sna     | DIPT      | Severus   | Snape      | M    | 45000 | 1951-05-01 |         2 |
+---------+-----------+-----------+------------+------+-------+------------+-----------+
8 rows in set (0.00 sec)

MySQL [skolan]> select * from larare where fodd = 3;
Empty set, 1 warning (0.00 sec)

MySQL [skolan]> show warnings;
+---------+------+------------------------------------------------------+
| Level   | Code | Message                                              |
+---------+------+------------------------------------------------------+
| Warning | 1292 | Incorrect date value: '3' for column 'fodd' at row 1 |
+---------+------+------------------------------------------------------+
1 row in set (0.00 sec)


Felet går att återskapa (minst) i följande version av MySQL.
Kod: Markera allt
MySQL [skolan]> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.17    |
+-----------+
1 row in set (0.00 sec)
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 5 gäster