Проблема виникла, коли я переніс усі свої дані з старого MacBook Air M1 на новий MacBook Pro M1 за допомогою Migration Assistant від Apple. Більшість даних перенеслося без проблем, але PostgreSQL не було серед них. Я зіткнувся з проблемою, коли порт 5432 був недоступний, а також з постійною помилкою Fatal Error 256 при спробі видалити чи очистити PostgreSQL.
Виявилося, що під час міграції залишились сирі процеси та залежності, що спричинило конфлікт. Після деякого налагодження мені вдалося звільнити порт і вирішити помилку. Ось як можна це зробити.
Проблема
• Порт 5432, стандартний порт PostgreSQL, був недоступний навіть після видалення PostgreSQL.
• Виконання команд, таких як brew uninstall, або спроби зупинити процеси PostgreSQL призводили до помилки Fatal Error 256.
Кроки для вирішення обох проблем
- Видалення 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
Звичні проблеми та їх рішення
- Fatal Error 256 під час видалення залежностей:
Використовуйте brew uninstall — ignore-dependencies для примусового видалення.
Перевірте наявність процесів, таких як cairo або інших залежностей, і видаліть або перерозподіліть їх.
- Порт все ще використовується після видалення:
Очищайте всі правила за допомогою:
sudo pfctl -F all -f /etc/pf.conf
Перезапустіть систему, якщо примарний процес все ще тримає порт.
Перекладено з: How I Solved the PostgreSQL Port 5432 Issue on macOS