Як я вирішив проблему з портом 5432 у PostgreSQL на macOS

Проблема виникла, коли я переніс усі свої дані з старого MacBook Air M1 на новий MacBook Pro M1 за допомогою Migration Assistant від Apple. Більшість даних перенеслося без проблем, але PostgreSQL не було серед них. Я зіткнувся з проблемою, коли порт 5432 був недоступний, а також з постійною помилкою Fatal Error 256 при спробі видалити чи очистити PostgreSQL.

Виявилося, що під час міграції залишились сирі процеси та залежності, що спричинило конфлікт. Після деякого налагодження мені вдалося звільнити порт і вирішити помилку. Ось як можна це зробити.

Проблема

• Порт 5432, стандартний порт PostgreSQL, був недоступний навіть після видалення PostgreSQL.

• Виконання команд, таких як brew uninstall, або спроби зупинити процеси PostgreSQL призводили до помилки Fatal Error 256.

Кроки для вирішення обох проблем

  1. Видалення PostgreSQL

Почніть з видалення PostgreSQL через Homebrew:

brew uninstall postgresql

Якщо ви працюєте з конкретною версією, видаліть її явно:

brew uninstall postgresql@14

Запустіть очистку, щоб переконатися, що не залишилось залишкових файлів:

brew cleanup

2. Перевірка залежностей

Якщо видалення не вдалося або виникла помилка Fatal Error 256, це, ймовірно, пов'язано з залежностями. Виконайте наступне:

brew list

Шукайте postgresql або інші залежності, такі як cairo, icu4c тощо, які можуть блокувати видалення.

3. Усунення помилки Fatal Error 256

Якщо команди Homebrew призводять до помилки Fatal Error 256, примусово видаліть PostgreSQL:

brew uninstall — ignore-dependencies postgresql

Увага: Це видалить PostgreSQL незалежно від залежностей, тому спочатку перевірте вашу конфігурацію.

4. Перевірка, чи порт 5432 все ще використовується

Після видалення перевірте, чи використовує якийсь процес порт 5432:

lsof -i :5432

Якщо нічого не повертається, спробуйте з sudo:

sudo lsof -nP -iTCP:5432 -sTCP:LISTEN

5. Завершення процесу, що використовує порт 5432

Якщо ви знайдете процес, наприклад postgres, який все ще слухає порт, запишіть PID і заверште його:

sudo kill -9

Наприклад:

sudo kill -9 326

6. Перевірка звільнення порту

Підтверджуйте, що порт 5432 тепер вільний:

lsof -i :5432

Якщо нічого не повертається, порт тепер доступний.

7. Перезапуск PostgreSQL (необов’язково)

Якщо ви хочете знову використовувати PostgreSQL, встановіть його:

brew install postgresql
brew services start postgresql

Звичні проблеми та їх рішення

  1. Fatal Error 256 під час видалення залежностей:

Використовуйте brew uninstall — ignore-dependencies для примусового видалення.

Перевірте наявність процесів, таких як cairo або інших залежностей, і видаліть або перерозподіліть їх.

  1. Порт все ще використовується після видалення:

Очищайте всі правила за допомогою:

sudo pfctl -F all -f /etc/pf.conf

Перезапустіть систему, якщо примарний процес все ще тримає порт.

Перекладено з: How I Solved the PostgreSQL Port 5432 Issue on macOS

Leave a Reply

Your email address will not be published. Required fields are marked *