NodeJS: запрос обновления не работает в MySQL - PullRequest
0 голосов
/ 05 мая 2020

Рассмотрим код ниже:

const queryString = "SET SQL_SAFE_UPDATES = 0; " +
"UPDATE fire_alarm.sensors " +
"SET smoke_level = " + smokeLevel + ", " +
    "carbondioxide_level = " + carbondioxideLevel + ", " +
    "sensor_status = '" + sensorStatus + "', " +
    "alert_status = '" + alertStatus + "'  " +
"WHERE floor_no = " + floorNumber + " AND room_no = " + roomNumber + ";  " +
"SET SQL_SAFE_UPDATES = 1;";

connection.query( queryString, function (err, rows) {
    if(err){
        console.error("Error : " + err);
        res.send(err);
        return;
    }
    res.json(rows);
});

При выполнении запроса я получаю следующее сообщение об ошибке:

{
 "code": "ER_PARSE_ERROR",
 "errno": 1064,
 "sqlMessage": "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE fire_alarm.sensors SET smoke_level = 6, carbondioxide_level = 6, sensor_s' at line 1",
} 

Но когда я выполняю точно такой же запрос в MySQL Workbench, он обновляется правильно, без ошибок SQL. В чем проблема и какое решение для этого ...?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Сам нашел решение для этого ....:)

Проблема была SET SQL_SAFE_UPDATES;, хотя в MySQL он выдает ошибку при обновлении записи без ключевого столбца при выполнении через nodejs, похоже, он вам не нужен.

0 голосов
/ 05 мая 2020

Не все ваши переменные, которые вы добавили в запрос sql, имеют одинарные кавычки до и после него. Итак, вы должны обновить как

const queryString = `
    SET SQL_SAFE_UPDATES = 0;
    UPDATE fire_alarm.sensors
    SET smoke_level='${smokeLevel}',
        carbondioxide_level='${carbondioxideLevel}',
        sensor_status='${sensorStatus},'
        alert_status='${alertStatus}'
    WHERE floor_no='${floorNumber}' AND room_no='${roomNumber}';
    SET SQL_SAFE_UPDATES = 1;
`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...