次のエラーは、postgreSQL 9.3.5 で gem "ar-octopus" を実行している Rails 3.2.18 アプリケーションのスレーブ サーバーで生成されています。
ActiveRecord::StatementInvalid in Devise::SessionsController#create
PG::ReadOnlySqlTransaction: ERROR: cannot execute UPDATE in a read-only transaction
: UPDATE "users" SET "last_sign_in_at"
フィールドはそのshards.yml
スレーブに定義されています
octopus:
replicated: true
fully_replicated: true
environments:
- development
- production
development:
shards:
slave1:
adapter: postgresql
host: slave_1_ip_address
database: app_development
username: my_user
password: my_password
名目上は database.yml ファイルからマスターを識別する必要があります
development:
# adapter: postgresql
adapter: postgis
database: app_development
username: my_user
schema_search_path: public
アダプターには両方の形式があることに注意してください。このアプリケーションには postgis が必要なため、マスターは postgis で定義されます。クエリで必要になるだけでなく、スレーブもそうである必要があると思います。それでも、両方の形式が試行され、エラーは同じままです。
タコが意図したことをしないのはなぜですか?