sql >> データベース >  >> RDS >> PostgreSQL

Djangoフィクスチャが失敗し、DatabaseError:値が長すぎて文字が変化しない(50)

    更新:Django1.8では50文字の制限が255になりました

    -

    元の回答:

    私も今日の午後に出会ったばかりで、(ある種の)修正があります

    ここでのこの投稿は、auth_permissionに許可されている値の長さに関係するDjangoのバグであることを示唆しています。さらに掘り下げると、このDjangoチケットと同様に、そのアイデアが裏付けられます(最初はMySQL関連ですが)。

    基本的に、パーミッション名はモデルのverbose_nameと説明的なパーミッション文字列に基づいて作成され、auth.models.Permission.nameで許可されている50文字を超える可能性があります。

    Djangoチケットに関するコメントを引用するには:

    auth_permission.name列の文字列値の最長のプレフィックスは、「変更可能」と「削除可能」で、どちらも11文字です。列の最大長は50であるため、Meta.verbose_nameの最大長は39です。

    1つの解決策は、50文字を超える文字をサポートするようにその列をハックすることです(理想的には、南の移行を介して、簡単に再現できるようにします)が、私が考えることができる最も迅速で信頼性の高い修正は、単に非常に長いverbose_name定義を作成することでしたはるかに短い(verbose_nameの47文字から約20文字まで)。これですべて正常に動作します。



    1. SQLで列と行を転置する簡単な方法は?

    2. phpMyAdminに似たPostgreSQLビジュアルインターフェイス?

    3. MySQLテーブルからの一意性制約の削除

    4. NHibernateおよびSqlServerでのデータ監査