\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82
| Path : /var/www/html/yedekledb24/DatabaseBackupMasterv7/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv7/fix_backup_log_columns.py |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
backup_log tablosundaki eksik sütunları ekleyen script.
"""
import os
import sys
import logging
import psycopg2
from psycopg2 import sql
from dotenv import load_dotenv
# Logging ayarları
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def get_database_url():
"""Veritabanı URL'sini çevre değişkeninden alır."""
load_dotenv()
db_url = os.environ.get('DATABASE_URL')
if not db_url:
logger.error("DATABASE_URL çevre değişkeni bulunamadı.")
sys.exit(1)
return db_url
def fix_backup_log_columns():
"""backup_log tablosundaki eksik sütunları ekler."""
db_url = get_database_url()
try:
# Veritabanı bağlantısını kur
conn = psycopg2.connect(db_url)
cursor = conn.cursor()
# backup_log tablosu için
logger.info("backup_log tablosunu kontrol ediliyor...")
# İlk olarak backup_method sütununun var olup olmadığını kontrol et
cursor.execute("""
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'backup_log' AND column_name = 'backup_method'
""")
if cursor.fetchone() is None:
logger.info("backup_method sütunu ekleniyor...")
cursor.execute(sql.SQL("""
ALTER TABLE backup_log
ADD COLUMN backup_method VARCHAR(16) DEFAULT 'full'
"""))
logger.info("backup_method sütunu eklendi.")
else:
logger.info("backup_method sütunu zaten mevcut.")
# parent_log_id sütunu için kontrolü
cursor.execute("""
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'backup_log' AND column_name = 'parent_log_id'
""")
if cursor.fetchone() is None:
logger.info("parent_log_id sütunu ekleniyor...")
cursor.execute(sql.SQL("""
ALTER TABLE backup_log
ADD COLUMN parent_log_id INTEGER REFERENCES backup_log(id) ON DELETE SET NULL
"""))
logger.info("parent_log_id sütunu eklendi.")
else:
logger.info("parent_log_id sütunu zaten mevcut.")
# Değişiklikleri kaydet
conn.commit()
logger.info("Tüm sütunlar başarıyla eklendi!")
except Exception as e:
logger.error(f"Veritabanı şeması güncellenirken hata oluştu: {str(e)}")
if 'conn' in locals() and conn:
conn.rollback()
return False
finally:
if 'cursor' in locals() and cursor:
cursor.close()
if 'conn' in locals() and conn:
conn.close()
return True
def main():
"""Ana fonksiyon"""
logger.info("Veritabanı şeması güncelleme scripti başlatılıyor...")
if fix_backup_log_columns():
logger.info("Veritabanı şeması başarıyla güncellendi.")
else:
logger.error("Veritabanı şeması güncellenemedi!")
sys.exit(1)
if __name__ == "__main__":
main()