1

すべてのデータベース システムを再コンパイルすることなく、PostgreSQL で識別子名の制限を 63 文字以上に引き上げることは可能ですか? この制限のために、この Django プロジェクトで繰り返しインデックス名を生成していますが、プロジェクトのビジネス要件のためにモデル名を変更する方法がありません。

4

2 に答える 2

2

これは私には Django のバグのように思えます。以前のバグであるPostgreSQL に指定されていない名前の最大長が修正されました。Django が max_name_length() に適合するデータベース識別子を生成することを期待しています。多分私は不当に楽観的です。

Django は、Oracle の max_name_length() に合うように繰り返し可能なハッシュを切り捨てて追加することを既に知っています。(名前付けの問題を参照してください。) 他のプラットフォームを使用している場合に、長い複雑な識別子を組み合わせて最善を尽くすだけではないことは確かです。

Django が max_name_length() を無視する原因となっているデフォルトの動作をオーバーライドしている可能性はありますか?

後で。. .

実際には、彼らはただ長い複雑な識別子を組み合わせて、最善を尽くすことを望んでいます. osdir.com のスレッドは、Django 1.3 で修正されることを示唆しています。DatabaseCreation、テーブル名、およびインデックス名に関する問題を参照してください - msg#00142

まだ後で。. .

MySQL でテストを実行しているチケットIndex length errorsは、MySQL に対する同じ修正がバージョン 1.2 で修正されたことを示しています。また、PostgreSQL (およびおそらく他のすべてのプラットフォーム) にも同じ問題がありました。PostgreSQL の修正が 1.2 に組み込まれたかどうかはわかりません。

于 2011-02-23T07:01:35.163 に答える
2

いいえ、できません。短い名前を使用する必要があります。他の dbms ではさらに少ない文字しか許可されていないため、常にこれらの制約を確認する必要があります。

于 2011-02-22T18:13:08.860 に答える