Files
rltn/MIGRATION_FIX.md

3.7 KiB
Raw Permalink Blame History

Исправление проблемы с миграцией

🚨 Проблема

Ошибка: column "created_at" of relation "city_objects" does not exist

🔧 Решения (по порядку приоритета):

Решение 1: Минимальная миграция

node run-minimal-migration.js

Решение 2: Прямое создание таблицы

  1. Откройте pgAdmin или подключитесь к БД через psql
  2. Выполните SQL из файла create-table-direct.sql
  3. Или скопируйте и выполните этот код:
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. Перезапустите сервер:

    npm start
    
  2. Проверьте работу редактора:

    • Откройте редактор карт
    • Попробуйте добавить объект
    • Проверьте сохранение в БД

🔍 Диагностика:

Проверка таблицы:

SELECT table_name, column_name, data_type 
FROM information_schema.columns 
WHERE table_name = 'city_objects' 
ORDER BY ordinal_position;

Проверка записей:

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) Текстуры

🎯 Результат:

После выполнения любого из решений редактор карт должен работать корректно с сохранением в БД.