Files
tg_tinder_bot/docs/migrations_fix.md
2025-09-18 16:52:03 +09:00

89 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Решение проблемы с миграциями базы данных
## Проблемы
При попытке применить миграции были обнаружены следующие проблемы:
1. **Ошибка с TypeScript файлами**: Node.js не может напрямую выполнять файлы `.ts` без компиляции их в JavaScript.
2. **Предупреждения о ES модулях**: Файлы используют синтаксис ES модулей, но не имеют расширения `.mjs` или настроек в package.json.
3. **Неверный порядок миграций**: Миграции могут выполняться в неправильном порядке.
## Решения
### Для быстрого применения миграций
Используйте один из следующих сценариев:
```bash
# Полный процесс миграции с компиляцией TypeScript
./bin/run_full_migration.sh
# Только SQL-миграции (минуя node-pg-migrate)
./bin/run_sql_migrations.sh
```
### Пошаговое решение
1. **Компиляция TypeScript миграций в JavaScript**:
```bash
./bin/compile_ts_migrations.sh
```
2. **Применение JS-миграций**:
```bash
./bin/apply_migrations.sh
```
3. **Ручное применение SQL-миграций**:
```bash
./bin/run_sql_migrations.sh
```
## Описание скриптов
- **run_full_migration.sh**: Полный процесс миграции, включающий компиляцию TypeScript и применение всех миграций.
- **compile_ts_migrations.sh**: Только компиляция TypeScript миграций в JavaScript.
- **apply_migrations.sh**: Применение JS-миграций через node-pg-migrate.
- **run_sql_migrations.sh**: Прямое применение SQL-миграций через psql.
## Проверка результатов
После выполнения миграций проверьте состояние базы данных:
```bash
# Подключение к базе данных
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME
# Проверка таблиц
\dt
# Проверка примененных миграций
SELECT * FROM migrations ORDER BY executed_at;
```
## Если проблемы сохраняются
1. **Очистить директорию миграций**:
```bash
# Создание резервной копии
mkdir -p backup_migrations
cp -r migrations/* backup_migrations/
# Оставить только JS-миграции
rm -f migrations/*.ts
```
2. **Инициализировать миграции заново**:
```bash
npx node-pg-migrate init
```
3. **Применить специальную консолидированную миграцию**:
```bash
# Создание консолидированной миграции
cat src/database/migrations/*.sql > consolidated.sql
# Применение консолидированной миграции
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_NAME -f consolidated.sql
```