# Исправление проблемы с миграцией ## 🚨 Проблема Ошибка: `column "created_at" of relation "city_objects" does not exist` ## 🔧 Решения (по порядку приоритета): ### **Решение 1: Минимальная миграция** ```bash node run-minimal-migration.js ``` ### **Решение 2: Прямое создание таблицы** 1. Откройте pgAdmin или подключитесь к БД через psql 2. Выполните SQL из файла `create-table-direct.sql` 3. Или скопируйте и выполните этот код: ```sql DROP TABLE IF EXISTS city_objects CASCADE; CREATE TABLE city_objects ( id SERIAL PRIMARY KEY, city_id INTEGER NOT NULL, name VARCHAR(255) NOT NULL DEFAULT '', model_url VARCHAR(500) NOT NULL, pos_x DECIMAL(15, 6) NOT NULL DEFAULT 0, pos_y DECIMAL(15, 6) NOT NULL DEFAULT 0, pos_z DECIMAL(15, 6) NOT NULL DEFAULT 0, rot_x DECIMAL(15, 6) NOT NULL DEFAULT 0, rot_y DECIMAL(15, 6) NOT NULL DEFAULT 0, rot_z DECIMAL(15, 6) NOT NULL DEFAULT 0, scale_x DECIMAL(15, 6) NOT NULL DEFAULT 1, scale_y DECIMAL(15, 6) NOT NULL DEFAULT 1, scale_z DECIMAL(15, 6) NOT NULL DEFAULT 1, organization_id INTEGER NOT NULL DEFAULT 2, rent DECIMAL(10, 2) NOT NULL DEFAULT 0, tax DECIMAL(10, 2) NOT NULL DEFAULT 0, collidable BOOLEAN NOT NULL DEFAULT false, interior_id INTEGER NOT NULL DEFAULT 101, textures VARCHAR(500) NOT NULL DEFAULT '-' ); CREATE INDEX idx_city_objects_city_id ON city_objects(city_id); CREATE INDEX idx_city_objects_organization_id ON city_objects(organization_id); CREATE INDEX idx_city_objects_interior_id ON city_objects(interior_id); CREATE INDEX idx_city_objects_position ON city_objects(pos_x, pos_y, pos_z); CREATE INDEX idx_city_objects_collidable ON city_objects(collidable); ``` ### **Решение 3: Проверка через редактор** 1. Откройте редактор карт 2. Нажмите кнопку "Проверить БД" 3. Если таблица существует, проблема решена ## ✅ После создания таблицы: 1. **Перезапустите сервер:** ```bash npm start ``` 2. **Проверьте работу редактора:** - Откройте редактор карт - Попробуйте добавить объект - Проверьте сохранение в БД ## 🔍 Диагностика: ### **Проверка таблицы:** ```sql SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_name = 'city_objects' ORDER BY ordinal_position; ``` ### **Проверка записей:** ```sql SELECT COUNT(*) FROM city_objects; ``` ## 📋 Структура таблицы: | Колонка | Тип | Описание | |---------|-----|----------| | id | SERIAL | Primary Key | | city_id | INTEGER | ID города | | name | VARCHAR(255) | Название объекта | | model_url | VARCHAR(500) | URL модели | | pos_x, pos_y, pos_z | DECIMAL(15,6) | Координаты | | rot_x, rot_y, rot_z | DECIMAL(15,6) | Поворот | | scale_x, scale_y, scale_z | DECIMAL(15,6) | Масштаб | | organization_id | INTEGER | ID организации | | rent | DECIMAL(10,2) | Аренда | | tax | DECIMAL(10,2) | Налог | | collidable | BOOLEAN | Коллизия | | interior_id | INTEGER | ID интерьера | | textures | VARCHAR(500) | Текстуры | ## 🎯 Результат: После выполнения любого из решений редактор карт должен работать корректно с сохранением в БД.