Помогите пожалуйста, ищу по id конкретную единицу в списке, в которой нужно обновить 1 поле характеристики, в характеристики приходит обьект, c обновленными данными, но суть в том что мне шваркает ошибка (Duplicate entry '1' for key 'PRIMARY'). Попытка юзать REPLACE INTO, заменяет все данные на null, и обновляет поле характеристик, а мне нужно апдейтить только одно поле, как победить проблему?
CREATE TABLE drillingRigs (
id INT(50) NOT NULL AUTO_INCREMENT,
name VARCHAR(150),
yearOfIssue DATE,
beginOfWork DATE,
endOfWork DATE,
latitude FLOAT,
longitude FLOAT,
images VARCHAR(300) COLLATE utf8_general_ci,
characteristics VARCHAR(300) COLLATE utf8_general_ci,
PRIMARY KEY (id)
) DEFAULT COLLATE utf8_general_ci DEFAULT CHARSET utf8;
const upDateCharacteristics = (id, data) => {
const jsonData = JSON.stringify(data);
return new Promise((resolve, reject) => {
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: ''
});
connection.query(`UPDATE drillingRigs SET id = ?, characteristics = ?`, [id, jsonData], (err, result) => {
if (err) reject(err);
resolve(result);
});
connection.end();
});
};
Что-то у вас тут странное. Зачем вы в SET пихаете id? Его в WHERE надо:
connection.query(`UPDATE drillingRigs SET characteristics = ? WHERE id = ?`, [jsonData, id], (err, result) => {
if (err) reject(err);
resolve(result);
});
Сборка персонального компьютера от Artline: умный выбор для современных пользователей