У меня возникли проблемы с восстановлением из версии «Discourse 3.5.0.beta9-dev - 04dbc622ab1e0197d16703ba47cf005ec93697ee» в текущую (6f06709643fa5e2253606c46f79d089ca3393ac9)
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /home/pfaffman/src/discourse-repos/discourse/tmp/restores/default/2025-10-28-201139 exists...
Downloading archive to tmp directory...
Extracting dump file...
Validating metadata...
Current version: 20251024020353
Restored version: 20250724012518
Enabling readonly mode...
Pausing sidekiq...
Waiting up to 60 seconds for Sidekiq to finish running jobs...
Creating missing functions in the discourse_functions schema...
Restoring dump file... (this may take a while)
invalid command \restrict
EXCEPTION: psql failed: invalid command \restrict
Если я удалю эти команды printf из database_restorer, восстановление работает:
<<~CMD
(
printf '%s\\n' "\\\\restrict #{nonce}"
#{sed_command}
printf '%s\\n' "\\\\unrestrict #{nonce}"
) | #{self.class.psql_command} 2>&1
CMD
Кажется, это связано с этим коммитом.
На версии, где была создана резервная копия (контейнер Docker cdck), у меня установлена:
PostgreSQL 15.13 (Debian 15.13-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
А вот здесь я пытаюсь восстановить (разработческая среда на «голом» железе с PostgreSQL 15):
PostgreSQL 15.13 (Ubuntu 15.13-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
Я не понимаю, что пытается сделать этот код, поэтому я просто в замешательстве.