3

次のエラーは、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 で定義されます。クエリで必要になるだけでなく、スレーブもそうである必要があると思います。それでも、両方の形式が試行され、エラーは同じままです。

タコが意図したことをしないのはなぜですか?

4

0 に答える 0