PG::DependentObjectsStillExist: ERROR: cannot drop function delete_user_password() because other objects depend on it
こちらから来ているようです:
PG::DependentObjectsStillExist: ERROR: cannot drop function delete_user_password() because other objects depend on it
こちらから来ているようです:
これはマイグレーション後です:
== 20240910090759 MakePasswordColumnsFromUsersReadOnly: マイグレーション中 =============
-- execute("DROP TRIGGER IF EXISTS users_password_sync_on_delete_password ON users;\n")
-> 0.0007s
-- execute("DROP FUNCTION IF EXISTS delete_user_password;\n")
rake が中断されました!
StandardError: エラーが発生しました。このマイグレーションおよびそれ以降のすべてのマイグレーションはキャンセルされました:(StandardError)
PG::DependentObjectsStillExist: エラー:function delete_user_password() は他のオブジェクトが依存しているため削除できません
DETAIL: table backup.users の trigger users_password_sync_on_delete_password は function delete_user_password() に依存しています
HINT: 依存するオブジェクトも削除するには DROP ... CASCADE を使用してください。
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.0/lib/patches/db/pg/alias_method.rb:109:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.0/lib/patches/db/pg/alias_method.rb:109:in `async_exec'
(eval at /var/www/discourse/lib/method_profiler.rb:38):24:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:56:in `block (2 levels) in raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:1004:in `block in with_raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:976:in `with_raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:55:in `block in raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:1119:in `log'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:54:in `raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:538:in `internal_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:137:in `execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/query_cache.rb:27:in `execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:48:in `execute'
backup スキーマ(バックアップ/復元時に使用)に、この関数に依存するテーブルがあります。
この backup スキーマは古いものでしょうか?もしそうであれば、おそらく DROP SCHEMA backup のみで削除できるはずです。
どうもありがとうございます!それは正しいように聞こえますが、それを実行すると、次のようなものが出てきます ![]()
table backup.group_archived_messages depends on schema backup
table backup.incoming_emails depends on schema backup
table backup.user_options depends on schema backup
table backup.email_change_requests depends on schema backup
table backup.given_daily_likes depends on schema backup
table backup.onceoff_logs depends on schema backup
table backup.tags depends on schema backup
table backup.topic_tags depends on schema backup
table backup.tag_users depends on schema backup
table backup.category_tags depends on schema backup
table backup.scheduler_stats depends on schema backup
table backup.tag_groups depends on schema backup
これは私が始めたときには新しく空のデータベースでしたが、なぜ古いバックアップデータベースがあるのか混乱しています。
編集:カスケードを使用しました。指示通りに:
DROP SCHEMA backup CASCADE;
これで解決したと思います!確認するには25分かかりますが、その頃にはコンピューターを見るのをやめていることを願っています。
明日また報告します。
改めて、ありがとうございました。
それが原因でした。何らかの理由で(例えば、復元に25分かかるため)復元を Ctrl+C で停止したのだと思いますが、それが古いスキーマを残したのだと思います。この10年間で学べなかったことだとは信じられませんが、そうなのです!
どうもありがとうございました。
このトピックは、最後の返信から30日後に自動的に閉じられました。新しい返信は許可されていません。