78 lines
2.4 KiB
Bash
Executable File
78 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
||
# scripts/check-db-connection.sh - Быстрая проверка подключения к БД
|
||
|
||
set -e
|
||
|
||
echo "🔗 Проверка подключения к базе данных..."
|
||
|
||
# Проверка из контейнера web
|
||
echo "📡 Тест 1: Django ORM подключение..."
|
||
if docker-compose exec -T web python -c "
|
||
import os
|
||
import django
|
||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
|
||
django.setup()
|
||
from django.db import connection
|
||
from django.contrib.auth import get_user_model
|
||
|
||
try:
|
||
# Тест подключения
|
||
with connection.cursor() as cursor:
|
||
cursor.execute('SELECT 1')
|
||
print('✅ База данных отвечает')
|
||
|
||
# Тест ORM
|
||
User = get_user_model()
|
||
user_count = User.objects.count()
|
||
print(f'✅ Пользователей в системе: {user_count}')
|
||
|
||
# Тест миграций
|
||
from django.core.management import call_command
|
||
from io import StringIO
|
||
out = StringIO()
|
||
call_command('showmigrations', '--plan', stdout=out)
|
||
migrations_output = out.getvalue()
|
||
if '[X]' in migrations_output:
|
||
print('✅ Миграции применены')
|
||
else:
|
||
print('⚠️ Есть неприменённые миграции')
|
||
|
||
except Exception as e:
|
||
print(f'❌ Ошибка Django: {e}')
|
||
exit(1)
|
||
" 2>/dev/null; then
|
||
echo "✅ Django успешно подключается к БД"
|
||
else
|
||
echo "❌ Ошибка подключения Django к БД"
|
||
exit 1
|
||
fi
|
||
|
||
# Прямая проверка PostgreSQL
|
||
echo ""
|
||
echo "📡 Тест 2: Прямое подключение к PostgreSQL..."
|
||
if docker-compose exec -T db pg_isready -U links_user -d links_db; then
|
||
echo "✅ PostgreSQL готов к подключениям"
|
||
else
|
||
echo "❌ PostgreSQL не готов"
|
||
exit 1
|
||
fi
|
||
|
||
# Проверка таблиц
|
||
echo ""
|
||
echo "📡 Тест 3: Проверка структуры БД..."
|
||
if docker-compose exec -T db psql -U links_user -d links_db -c "
|
||
SELECT
|
||
schemaname,
|
||
tablename
|
||
FROM pg_tables
|
||
WHERE schemaname = 'public'
|
||
ORDER BY tablename;
|
||
" 2>/dev/null; then
|
||
echo "✅ Таблицы базы данных доступны"
|
||
else
|
||
echo "❌ Не удается получить список таблиц"
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
echo "✅ Все проверки подключения к БД пройдены успешно!" |