在从属服务器上为在 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,所以 master 是用 postgis 定义的,我假设 slave 应该和查询一样需要它。尽管如此,两种形式都已尝试过,并且错误保持不变。
为什么章鱼没有做它声称的事情?