This commit is contained in:
78
scripts/check-db-connection.sh
Executable file
78
scripts/check-db-connection.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/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 "✅ Все проверки подключения к БД пройдены успешно!"
|
||||
Reference in New Issue
Block a user