2017-02-24 19 views
5

Rails projemi çok kiracılığa dönüştürüyorum ve Apartment kullanıyorum. PG :: InFailedSql İlk kiracıyı oluştururken yapılan işlem

Onların README yön ve the video they link to

izledi Benim apartment.rb şuna benzer:

Ben db çalıştırabilirsiniz
class Project < ApplicationRecord 
    after_create :create_tenant 

    private 

    def create_tenant 
    Apartment::Tenant.create(subdomain) 
    end 
end 

: göç

require 'apartment/elevators/subdomain' 
Apartment.configure do |config| 
    config.excluded_models = ['Project', 'User'] 
    config.tenant_names = lambda { Project.pluck :subdomain } 
    config.use_schemas = true 
    config.persistent_schemas = %w{ public } 
end 
Rails.application.config.middleware.use Apartment::Elevators::Subdomain 

Projem modeli şöyle ve db: kurulum sorun değil. Tüm tabloları o zaman genel şemada oluşturur. Ben yeni bir proje oluşturmaya çalıştığınızda

Ama ben

C:\code\vulnerability-history>rails c 
Loading development environment (Rails 5.0.1) 
irb(main):001:0> Project.create(name: 'foo', subdomain: 'bar') 
    (0.0ms) BEGIN 
    SQL (1.0ms) INSERT INTO "public"."projects" ("name", "subdomain") VALUES ($1, $2) RETURNING "id" [["name", "foo"], ["subdomain", "bar"]] 
    (1.0ms) CREATE SCHEMA "bar" 
    SQL (1.0ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" 
    (2.0ms) DROP TABLE "commit_filepaths" CASCADE 
    (14.0ms) CREATE TABLE "commit_filepaths" ("id" serial primary key, "commit_id" integer NOT NULL, "filepath_id" integer NOT NULL, "total_churn" integer DEFAULT 0 NOT NULL) 
    (1.0ms) DROP TABLE "commits" CASCADE 
    (11.0ms) CREATE TABLE "commits" ("id" serial primary key, "commit_hash" character varying NOT NULL, "author_id" integer NOT NULL, "message" character varying NOT NULL, "date_created" timestamp NOT NULL, "notes" jsonb DEFAULT '{}' NOT NULL) 
    (1.0ms) DROP TABLE "developers" CASCADE 
    (11.0ms) CREATE TABLE "developers" ("id" serial primary key, "email" character varying NOT NULL) 
    (1.5ms) DROP TABLE "events" CASCADE 
    (9.4ms) CREATE TABLE "events" ("id" serial primary key, "detail_type" character varying NOT NULL, "detail_id" integer NOT NULL, "title_template" character varying DEFAULT ':title:' NOT NULL, "description_template" character varying DEFAULT ':description:' NOT NULL, "type_template" character varying DEFAULT ':type:' NOT NULL, "date_template" character varying DEFAULT ':date:' NOT NULL, "style_id" integer NOT NULL) 
    (1.0ms) DROP TABLE "filepaths" CASCADE 
    (11.0ms) CREATE TABLE "filepaths" ("id" serial primary key, "filepath" character varying NOT NULL, "notes" jsonb DEFAULT '{}' NOT NULL) 
    (1.0ms) DROP TABLE "fixes" CASCADE 
    (11.0ms) CREATE TABLE "fixes" ("id" serial primary key, "commit_id" integer NOT NULL, "vulnerability_id" integer NOT NULL, "notes" jsonb DEFAULT '{}' NOT NULL) 
    (1.0ms) DROP TABLE "projects" CASCADE 
    (13.0ms) CREATE TABLE "projects" ("id" serial primary key, "name" character varying NOT NULL, "subdomain" character varying NOT NULL) 
    (1.0ms) DROP TABLE "releases" CASCADE 
    (10.6ms) CREATE TABLE "releases" ("id" serial primary key, "number" integer NOT NULL, "date_released" timestamp NOT NULL, "project" character varying NOT NULL, "notes" jsonb NOT NULL) 
    (1.0ms) DROP TABLE "styles" CASCADE 
    (11.3ms) CREATE TABLE "styles" ("id" serial primary key, "name" character varying NOT NULL, "color" character varying DEFAULT '#ffffff' NOT NULL, "icon" character varying DEFAULT 'stars' NOT NULL) 
    (1.0ms) DROP TABLE "users" CASCADE 
    (11.4ms) CREATE TABLE "users" ("id" serial primary key, "username" character varying NOT NULL) 
    (1.0ms) DROP TABLE "vccs" CASCADE 
    (10.0ms) CREATE TABLE "vccs" ("id" serial primary key, "commit_id" integer NOT NULL, "vulnerability_id" integer NOT NULL, "notes" jsonb DEFAULT '{}' NOT NULL) 
    (1.0ms) DROP TABLE "vulnerabilities" CASCADE 
    (12.3ms) CREATE TABLE "vulnerabilities" ("id" serial primary key, "cve" character varying NOT NULL, "announced" timestamp NOT NULL, "description" character varying DEFAULT '' NOT NULL, "notes" jsonb DEFAULT '{}' NOT NULL) 
    (1.0ms) SELECT version FROM "schema_migrations" 
    ActiveRecord::InternalMetadata Load (1.0ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", :environment], ["LIMIT", 1]] 
    (0.0ms) ROLLBACK 
ActiveRecord::StatementInvalid: PG::InFailedSqlTransaction: ERROR: current transaction is aborted, commands ignored until end of transaction block 
: SET search_path TO "public", "public" 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `async_exec' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `block in execute' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:97:in `execute' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:315:in `schema_search_path=' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/apartment-1.2.0/lib/apartment/adapters/postgresql_adapter.rb:40:in `reset' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/apartment-1.2.0/lib/apartment/adapters/abstract_adapter.rb:109:in `rescue in ensure in switch' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/apartment-1.2.0/lib/apartment/adapters/abstract_adapter.rb:109:in `ensure in switch' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/apartment-1.2.0/lib/apartment/adapters/abstract_adapter.rb:109:in `switch' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/apartment-1.2.0/lib/apartment/adapters/abstract_adapter.rb:26:in `block in create' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:97:in `__run_callbacks__' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:750:in `_run_create_callbacks' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:90:in `run_callbacks' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/apartment-1.2.0/lib/apartment/adapters/abstract_adapter.rb:23:in `create' 
... 22 levels... 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:211:in `transaction' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:392:in `with_transaction_returning_status' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:319:in `block in save' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:334:in `rollback_active_record_state!' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:318:in `save' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/suppressor.rb:41:in `save' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/persistence.rb:34:in `create' 
     from (irb):1 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!' 
     from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>' 
     from bin/rails:4:in `require' 
     from bin/rails:4:in `<main>' 

Ben benzer bir stacktrace sahip bildirimin this issue yaptılar (raylar c) bu olsun, ama geçici çözüm bana mantıklı değil.

kullanıyorum: Yakut 2.3.1 (2016/04/26 hatadaki yama seviyelerini 112) [x64 mingw32] daire 1.2.0 Raylar 5.0.1

+0

Sorunu daraltmak için tüm bir tabloyu kiracı geçişlerinden kaldırmayı deneyin. Kötü bir göç olabilir. ActiveRecord :: StatementInvalid hatadan, SQL deyimlerinin geçersiz olduğu anlamına gelir. – Troy

cevap

0

günlük güvenilmez ise, Başarısız görünüyor:

SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", :environment], ["LIMIT", 1]] 

Db/schema.rb'niz bu tabloyu içeriyor mu? Rails 5'te yeni bir sistem tablosu.

+0

Ah! Birinin yeni olduğunu anlamadım. Yani ben daireyi kullanmadığımda, sadece iyi oluşturulur. Ama apartman daireyi yaratamadı mı? Gidip onlarla bir hata yapacağım ve onaylayacağım. Eğer sorun buysa, geri döneceğim ve size ödül vereceğim. – Andy

+0

Apartman milletinden henüz bir haber yok [sayım] (https://github.com/influitive/apartment/issues/404), ama [bu işlem] ile ar_internal_metadata'nın farkında oldukları anlaşılıyor (https: // github .com/effective/apartment/commit/bd3f56de3d5842ba333fa82f2dab9e65b7ec5592) – Andy

+0

Ben bir apartman halkıyım! :) Yeni kiracı, db/schema.rb adresinden oluşturulur, bu tablo orada tanımlanmış mı? apartman kullanmıyorken nasıl çalışıyorsun ve çalışıyor? edit: nvm rayların anlık olarak nasıl çalıştığını unutmuşum. ona bakacağım. –