8

フォロワーを使用して、Herokuに新しいデータベースを作成しました。コミットが0になった後、マスターデータベースのフォローを解除し、デフォルトとしてプロモートします。

正常に動作しているようですが、読み取り専用のようです。コンソールからレコードをシーブしようとすると、このエラーが表示されます

ActiveRecord::StatementInvalid: PG::Error: ERROR:  cannot execute UPDATE in a read-only transaction

これを解決する方法はありますか?

4

2 に答える 2

5

レプリカが実際にプロモートされることはありませんでした。コメントを参照してください。

次の理由により、レプリカがマスターサーバーをフォローしていることがわかります。

SELECT pg_is_in_recovery();

trueを返します。マスターサーバーが回復できるのは、マスターサーバーがまだ起動しているときだけであるため、これはマスターサーバーでtrueを返すことはできません。その後、マスターサーバーに接続できないため、そのコマンドを実行できません。これは、9.2および9.3betaの時点で当てはまります。これは将来のバージョンで変更される可能性があるため、これを読んでいて、新しいバージョンでは、サーバーがレプリカであるかどうかを確認するための専用関数を確認してください。

于 2012-11-05T13:43:27.230 に答える
0

状況によっては、アクティブレコードコンソールで書き込みモードを明示的に設定する必要があります。実行してみてください:

readwrite!

これはHerokuコンソールに直接関係しないかもしれませんが、この特定のソリューションが必要な人のためにここに投稿すると思いました。

于 2019-04-04T16:30:02.677 に答える