Files
links/scripts/check-db-connection.sh
Andrey K. Choi fb74a4a25d
Some checks failed
continuous-integration/drone/push Build is failing
some fixes
2025-11-08 18:45:20 +09:00

78 lines
2.4 KiB
Bash
Executable File
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.

#!/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 "✅ Все проверки подключения к БД пройдены успешно!"