💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محسن
مشکل اتصال به postgresql
جامعه پایتون (وب) ایجاد شده در ۱۹ آبان ۱۴۰۳

سلام وقتتون بخیر 

من Postgres رو روی یک virtualhost اوردم بالا و وقتی که می‌خوام از طریق django متصل بشم ارور میده (OSError: exception: access violation writing 0x0000000000000000)

از طریق یک virtualhost دیگه هم تست کردم مشکلی توی اتصال به دیتابیس وجود نداره 
 

سلام! ببین، این اروری که داری معمولاً به خاطر تنظیمات اشتباه توی اتصال جنگو به PostgreSQL یا مشکلات دسترسی اتفاق می‌افته. از اونجایی که توی یه Virtual Host دیگه بدون مشکل کار می‌کنه، پس احتمالاً تنظیماتت توی این یکی Virtual Host مشکل داره. چندتا مورد رو چک کن:

 ۱. تنظیمات دسترسی توی PostgreSQL
باید مطمئن شی که دسترسی‌های لازم برای IP این Virtual Host توی تنظیمات PostgreSQL داده شده. برو توی فایل `pg_hba.conf` و مطمئن شو که IP این سرور جدید اونجا اضافه شده، مثلاً:


host    all             all             [IP_ADDRESS_OF_VIRTUAL_HOST]             md5

بعدش هم PostgreSQL رو ری‌استارت کن که تنظیماتش به‌روز بشه:


sudo systemctl restart postgresql

 ۲. تنظیمات دیتابیس توی فایل settings.py
برو فایل تنظیمات پروژه جنگوت، یعنی `settings.py`، و چک کن که همه اطلاعات دیتابیس (اسم، کاربر، پسورد و IP) درست وارد شده باشه. یه چیزی شبیه به این باید باشه:


DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql',
       'NAME': 'نام دیتابیس',
       'USER': 'نام کاربر',
       'PASSWORD': 'رمز عبور',
       'HOST': 'آی‌پی سرور دیتابیس',
       'PORT': '5432',  # همون پورت پیش‌فرض PostgreSQL
   }
}

۳. دسترسی کاربر توی PostgreSQL
باید مطمئن بشی که کاربری که وارد کردی، دسترسی لازم به دیتابیس رو داره:

1. اول وارد PostgreSQL شو:


   sudo -u postgres psql

2. بعدش دسترسی‌ها رو با این دستور بررسی کن:


   GRANT ALL PRIVILEGES ON DATABASE your_database_name TO your_username;

۴. نسخه‌های درایور و PostgreSQL
گاهی اوقات نسخه‌های `psycopg2` (درایور PostgreSQL برای پایتون) و PostgreSQL ممکنه با هم جور نباشن. اگه مشکل همچنان پابرجا بود، درایور `psycopg2` رو آپدیت کن:


pip install --upgrade psycopg2-binary

۵. فایروال و امنیت
چک کن که فایروال یا تنظیمات امنیتی جلوی دسترسی به پورت ۵۴۳۲ (پورت PostgreSQL) رو نگرفته باشه. برای اینکه این اتصال از Virtual Host دیگه برقرار بشه، باید پورت باز باشه.

اگر بازم مشکل داشتی، بگو که بیشتر کمک کنم!

Reza Mobaraki ۲۱ آبان ۱۴۰۳، ۰۶:۴۳