migrations fix
This commit is contained in:
88
docs/migrations_fix.md
Normal file
88
docs/migrations_fix.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Решение проблемы с миграциями базы данных
|
||||
|
||||
## Проблемы
|
||||
|
||||
При попытке применить миграции были обнаружены следующие проблемы:
|
||||
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user