обновление от 2025-10-08 для ветки 19SEP
This commit is contained in:
65
DUPLICATE_KEY_FIX.md
Normal file
65
DUPLICATE_KEY_FIX.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Исправление ошибки дублирования ключей
|
||||
|
||||
## 🚨 Проблема
|
||||
Ошибка: `duplicate key value violates unique constraint "city_objects_pkey"`
|
||||
- Объекты загружаются из БД с существующими ID
|
||||
- При сохранении пытаемся создать объекты с теми же ID
|
||||
- Это вызывает конфликт первичных ключей
|
||||
|
||||
## ✅ Решение
|
||||
|
||||
### **1. Исправлена логика на клиенте:**
|
||||
- Если у объекта есть ID → обновляем существующий
|
||||
- Если у объекта нет ID → создаем новый
|
||||
- Добавлено логирование для отладки
|
||||
|
||||
### **2. Исправлена логика на сервере:**
|
||||
- Проверка `if (id && id !== null && id !== undefined)`
|
||||
- Если ID есть → UPDATE (обновление)
|
||||
- Если ID нет → INSERT (создание)
|
||||
- Добавлено подробное логирование
|
||||
|
||||
## 🔧 Как это работает:
|
||||
|
||||
### **Для существующих объектов:**
|
||||
1. Объект загружается из БД с ID (например, 110)
|
||||
2. Пользователь редактирует объект
|
||||
3. При сохранении отправляется ID = 110
|
||||
4. Сервер выполняет UPDATE для ID = 110
|
||||
5. ✅ Объект обновлен
|
||||
|
||||
### **Для новых объектов:**
|
||||
1. Пользователь добавляет новый объект
|
||||
2. У объекта нет ID (null)
|
||||
3. При сохранении отправляется ID = null
|
||||
4. Сервер выполняет INSERT без указания ID
|
||||
5. ✅ Новый объект создан с автоматическим ID
|
||||
|
||||
## 📋 Логи для отладки:
|
||||
|
||||
### **В консоли браузера:**
|
||||
```
|
||||
🔄 Начинаем сохранение объекта в БД...
|
||||
📝 Обновляем объект: Название объекта
|
||||
📤 Отправляем данные на сервер: { id: 110, ... }
|
||||
📡 Ответ сервера: 200 OK
|
||||
✅ Объект успешно сохранен в БД: { id: 110, success: true }
|
||||
```
|
||||
|
||||
### **В консоли сервера:**
|
||||
```
|
||||
🔄 Обновляем существующий объект с ID: 110
|
||||
✅ Объект обновлен: { id: 110 }
|
||||
```
|
||||
|
||||
## 🎯 Результат:
|
||||
- Существующие объекты обновляются
|
||||
- Новые объекты создаются
|
||||
- Нет конфликтов первичных ключей
|
||||
- Все операции логируются для отладки
|
||||
|
||||
## 🔍 Проверка:
|
||||
1. Добавьте объект → нажмите "Сохранить"
|
||||
2. Отредактируйте объект → нажмите "Сохранить"
|
||||
3. Перезагрузите страницу → объекты должны загрузиться
|
||||
4. Проверьте логи в консоли браузера и сервера
|
||||
Reference in New Issue
Block a user