Розбираємо помилку PG::ObjectInUse (Ruby on Rails)

Іноді під час розробки може виникнути помилка PG::ObjectInUse: ERROR.
Наприклад:
rake db:drop;
Покаже нам наступну помилку:
PG::ObjectInUse: ERROR:  database "myproject_development" is being accessed by other users

DETAIL:  There is 1 other session using the database

Couldn't drop database 'myproject_development'

rake aborted!

ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR:  database "myproject_development" is being accessed by other users

DETAIL:  There is 1 other session using the database.

Caused by:PG::ObjectInUse: ERROR:  database "myproject_development" is being accessed by other users

DETAIL:  There is 1 other session using the database.
Tasks: TOP => db:drop:_unsafe

(See full trace by running task with --trace)
Тут все доволі просто. Повідомлення дуже інформативне й буквально каже - database "myproject_development" is being accessed by other users. Тобто наразі ми не можемо дропнути базу даних, бо у неї є активне підключення. Локально зазвичай це або запущений rails server та/або rails c (консоль). Треба їх закрити, щоб процес відключився від бази даних. Після цього перезапускаємо rake db:drop; і все має працювати.
Іноді може трапитись, що у нас локально здавалось би немає відкритих процесів / підключень в терміналі, але ми все ще маємо помилку "database is being accessed by other users". Зазвичай це означає що ми десь маємо процес, який все ще працює з базою даних. Іноді це може бути background-процес / daemon. Але для того щоб знайти й вбити цей процес - треба більше контексту. Можна просканувати порти та процеси й вбити ті що використовують базу. Але про це я напевно напишу в іншу нотатку.
Цейво!Відреагуй!
🧵

Цей допис поки що не має жодних доповнень від автора/ки.

Що означає помилка 'is out of range' в Ruby on Rails? Range Error - Integer with limit 4 bytes
13 черв. '24, 07:18

Що означає помилка 'is out of range' в Ruby on Rails? Range Error - Integer with limit 4 bytes

meme code
Вмикаємо YJIT у Ruby 3.2.1 (Ruby on Rails)
8 трав. '24, 07:57

Вмикаємо YJIT у Ruby 3.2.1 (Ruby on Rails)

meme code
24 трав. '23, 18:53

Що таке joins у Ruby on Rails та як це працює?

meme code
23 трав. '23, 11:16

Як працює has_many through зв'язок (many to many) у Ruby on Rails?

meme code
22 трав. '23, 16:26

В чому різниця <%, <%=, <%# та -%> у ERB шаблонах (Ruby on Rails)?

meme code
18 квіт. '24, 05:27

Фіксимо ActiveRecord::ProtectedEnvironmentError у локальному середовищі

meme code
15 квіт. '24, 18:11

Що таке HTTP Client hints (Підказки клієнта)?

meme code
15 квіт. '24, 17:50

Що таке ентропія?

meme code
14 квіт. '24, 09:14

Accept - HTTP заголовок, для чого потрібен та як працює?

meme code
14 квіт. '24, 09:12

Що таке Quality values (якісні значення / пріоритет) в HTTP?

meme code
12 квіт. '24, 10:07

Що таке Routing (Маршрутизація)?

meme code
27 квіт. '24, 09:29

Що таке CC та BCC в емейлах? Для чого та як використовувати?

meme code
Що таке промпт (prompt) та промпт-інжинірінг?
3 трав. '24, 12:08

Що таке промпт (prompt) та промпт-інжинірінг?

meme code
ZOMBIE в Ruby. Що це таке?
3 трав. '24, 12:41

ZOMBIE в Ruby. Що це таке?

meme code
3 трав. '24, 13:13

Що таке Garbage Collector у Ruby? Як працює та для чого потрібен GC?

meme code
Трохи про типи реалізації Ruby (CRuby (MRI), JRuby, Rubinius, TruffleRuby, mruby)
5 трав. '24, 12:36

Трохи про типи реалізації Ruby (CRuby (MRI), JRuby, Rubinius, TruffleRuby, mruby)

meme code
7 трав. '24, 07:24

Що таке нативний машинний код?

meme code