2016-04-24 22 views
1

と一緒に渡されたときに私が実行したときに、私はエラーを持って動作しません:Djangoの移行は、スキーマ名はテーブル名

$ python manage.py migrate 

これはシナリオです:

私は中2つのスキーマを持っています私のPostgresデータベース。それは2つのスキーマ、どこですか? SQL Server、Mysql、またはOracleの2つのスキーマにすることができます。

  1. 私はデフォルトのdjangoテーブルを1つのスキーマに入れたいと思っていました。スキーマ名=:ジャンゴ」。。私は問題を抱えていますどこ異なるスキーマで

  2. 私自身のモデルは、これは、スキーマ名=。 『データ』私がいない場合

私のモデルはうまく動作しますスキーマ名をdb_tableオプションに追加するには ""引用符を使用する必要がありますが、これは問題です。実際には引用符( "schema_name" 。 "table_name")、Djangoがモデルのインデックスを作成しようとしたときに問題が発生します。PostgreSQLはスキーマ名を渡す必要がないか、スキーマ名を渡す必要がないため、エラーが発生します。

私は多くの投稿を見ましたが、私はPostgreSQLを永遠に使用すると仮定しているので、テナントのようなツールを使用することを提案しています。blablablaはPostgreSQLのみで動作すると信じています。私がそれを使用したくない理由は、私のプロジェクトがもはやポータブルにならないためです.SQL Server、MySQL、Oracleに移行したいのですが?私は自分のプロジェクトで修正を加えなければならないだろうし、私はそれを望んでいない。

また、私のメタでオプションdb_schemaを使うことについても読んでいますが、まったく動作しません。 Djangoはdb_schema属性を認識していないようです。

モデル:

class ClientCode(models.Model): 
    client_code_id = models.AutoField(primary_key=True) 
    client_code_name = models.CharField(max_length=255) 
    client_name = models.CharField(max_length=255) 
    is_inactive = models.BooleanField(default=False) 
    is_billable = models.BooleanField(default=True) 
    is_internal = models.BooleanField(default=True) 
    company = models.ForeignKey('companies.Company',related_name='clientcodes') 
    slug = models.SlugField(unique=True, default='') 


    def get_absolute_url(self): 
     return reverse("clientcodes:details", kwargs = {"slug": self.slug}) 


    class Meta: 
     unique_together = ('company','client_code_name') 
     ordering = ['client_code_name'] 
     db_table = '"data"."client_code"' 
     # app_label = 'company_clientcodes' 

    def __str__(self): 
     return '%s: %s' % (self.client_code_name, self.client_name) 

これは、エラーは次のとおりです。

django.db.utils.ProgrammingError: zero-length delimited identifier at or near """" 
LINE 1: CREATE INDEX ""data"."client_code"_447d3092" ON "data"."clie... 

SQLMigrateコード結果:

BEGIN; 
-- 
-- Create model ClientCode 
-- 
CREATE TABLE "data"."client_code" ("client_code_id" serial NOT NULL PRIMARY KEY, "client_code_name" varchar(255) NOT NULL, "client_name" varchar(255) NOT NULL, "is_inactive" boolean NOT NULL, "is_billable" boolean NOT NULL, "is_internal" boolean NOT NULL, "slug" varchar(50) NOT NULL UNIQUE, "company_id" integer NOT NULL); 
-- 
-- Alter unique_together for clientcode (1 constraint(s)) 
-- 
ALTER TABLE "data"."client_code" ADD CONSTRAINT  "data_client_code_company_id_e066ecc7_uniq" UNIQUE ("company_id", "client_code_name"); 
ALTER TABLE "data"."client_code" ADD CONSTRAINT "data_client_code_company_id_bf78b136_fk_data_company_company_id" FOREIGN KEY ("company_id") REFERENCES "data"."company" ("company_id") DEFERRABLE INITIALLY DEFERRED; 
CREATE INDEX ""data"."client_code"_447d3092" ON "data"."client_code"  ("company_id"); 
CREATE INDEX "data_client_code_slug_d0a8e64d_like" ON "data"."client_code" ("slug" varchar_pattern_ops); 

COMMIT; 

すべてのヘルプは高く評価され

は、ここに私のコードです。私は同じエラーを解決し

+0

SQL移行で生成されるものを提供できますか:https://docs.djangoproject.com/en/1.9/ref/django-admin/#django-admin-sqlmigrate? – vanadium23

+0

こんにちは@バナジウム23。私はちょうど私のポストにそれを加えました。問題はすぐにわかりますが、どうすれば修正できますか?それは私の大きな質問です。私はDjangoのフレームワークが、私たちがそれを取り巻くスニペットを書くことを期待しているとは思わない。 –

答えて

0

、私はこのような何かを持っていた:

db_table = "'sellers'" 

ので、私は

db_table = 'sellers' 

にそれを変更して、移行がうまく働きました。同じ方法でコードを変更しようとするかもしれません。

関連する問題